ホームページ >バックエンド開発 >PHPチュートリアル >PHPの擬似静的ルールの書き方(Apache擬似静的ルール)_PHPチュートリアル
PHP では、擬似静的を作成したい場合は、PHP を直接使用して URL を処理できますが、この種の擬似静的は、単に平行インポートのように見えると言えます。もちろん、真の擬似静的を実現したい場合は、Apache Rewrite 擬似静的モジュールを使用してみましょう。
PHP プログラムは次のように疑似静的 URL を実装します。
代码如下 | 复制幣 |
//伪静态方法一 "; echo $_GET[id]." ";// 1 echo $_GET[アクション];// 2 ?> //伪静态方法二 // localhost/php100/test.php/1/2 $filename = ベース名($_SERVER['SCRIPT_NAME']); echo $_SERVER['SCRIPT_NAME']." ";// /php100/test.php echo $filename." ";// test.php if(strto lower($filename)=='test.php'){ if(!empty($_GET[id])){ $id=intval($_GET[id]); echo $id." "; $action=intval($_GET[アクション]); echo $action." "; }その他{ $nav=$_SERVER['REQUEST_URI']; echo "1:".$nav." ";// /php100/test.php/1/2 $script=$_SERVER['SCRIPT_NAME']; echo "2:".$script." ";// /php100/test.php $nav=ereg_replace("^$script","",urldecode($nav)); echo $nav." "; // /1/2 $vars=explode("/",$nav); print_r($vars);// 配列 ( [0] => [1] => 1 [2] => 2 ) echo " "; $id=intval($vars[1]); $action=intval($vars[2]); } echo $id.'&'.$action; } ?> //伪静态方法三 関数 mod_rewrite(){ グローバル $_GET; $nav=$_SERVER["REQUEST_URI"]; echo $nav." "; $script_name=$_SERVER["SCRIPT_NAME"]; echo $script_name." "; $nav=substr(ereg_replace("^$script_name","",urldecode($nav)),1); echo $nav." "; $nav=preg_replace("/^.ht(m){1}(l){0,1}$/","",$nav);//この句は去掉尾部的.htmlまたは.htm echo $nav." "; $vars =explode("/",$nav); print_r($vars); echo " "; for($i=0;$i } $_GET を返します; } mod_rewrite(); $year=$_GET["year"];//結果は'2006' echo $year." "; $action=$_GET["action"];//結果は'_add' エコー $アクション; ?> //伪静态方法四 // サーバー利用量取得 PATH_INFO 情報 この例の中の /1,100,8630.html つまり、実行スクリプト名の後の部分 if(@$path_info =$_SERVER["PATH_INFO"]){ //正则適合一下パラメータ if(preg_match("//(d+),(d+),(d+).html/si",$path_info,$arr_path)){ $gid =intval($arr_path[1]); // 取得值 1 $sid =intval($arr_path[2]); //取得值100 $softid =intval($arr_path[3]); //取得值8630 }else die("パス:エラー!"); //soft.php?gid=1&sid=100&softid=8630 に相当します }else die('Path:Nothing!'); ?> |
サーバー権限がある場合は、apache%CE%B1%BE%B2%CC%AC/" target="_blank">apache pseudo-static を使用すると良いと思います
1.Apacheの設定:
/etc/httpd/conf/ ディレクトリに移動し、httpd.conf ファイルを開きます。
書き換えを有効にする
# LoadModule rewrite_module modules/mod_rewrite.so 前の #
を削除します
.htaccess を有効にする
「AllowOverride None」は「AllowOverride All」に変更されます
2.書き込み方法を書き換える
サーバーには私たちが変更できない設定ファイルがあるため、ほとんどの場合、Web サイトのルート ディレクトリに .htaccess ファイルを作成する必要があります。
コードは次のとおりです | コードをコピー |
RewriteEngine on //書き換えエンジンを開始します RewriteRule ^/index([0-9]*).html$ /index.php?id=$1 //"([0-9]*)" は範囲を表し、すべて同じを表すには (.*) を使用します。下に。 RewriteRule ^/index([0-9]*)/$ /index.php?id=$1 [R] //仮想ディレクトリ |
3. mod_rewrite ルール修飾子
1) R は外部リダイレクトを強制します
2) F は URL を無効にし、403 HTTP ステータス コードを返します。
3) G は URL を強制的に GONE にし、HTTP ステータス コード 410 を返します。
4) P はプロキシ転送の使用を強制します。
5) L は、現在のルールが最後のルールであり、将来のルールの書き換えの分析を停止することを示します。
6) N は、最初のルールから書き換えプロセスを再度実行します。
7) C は次のルールに関連付けられます
ルールが一致した場合は正常に処理され、以下の修飾子は無効になります
8) T=MIME-type(強制MIMEタイプ) 強制MIMEタイプ
9) NS は非内部サブリクエストにのみ使用されます
10) NC では大文字と小文字が区別されません
11) QSA 追加リクエスト文字列
12) NE はエスケープされた特殊文字を出力しなくなりました。%3d$1 は =$1 と同等です