最初の方法: Apache 環境で URL アドレスを書き換える場合、正規表現が最も基本的な要件ですが、一般的な URL アドレスの場合は、基本的な一致でほとんどの要件を満たすことができるため、よほど特殊な URL アドレスでない限り、しかし、これは私が議論したい内容の範囲ではありません。いくつかの簡単な手順で Apache で URL アドレスを書き換える方法を学びましょう:
002
003 URL 例
004
005 書き換え URL: http://www.baidu.com/?p=152
006
007 元の URL: http://www.baidu.com/p152.html
008
009 書き換えルール:
010
011 ^p([0-9]+).html /?p=$1 [L]
012
013 基本的な日常知識:
014
015 ^ 行頭と一致、URL と一致します。RewriteRule の場合、ドメイン名 (http://www.xxxx.com) は URL アドレスの一部ではありません (上記のように)。キャプチャされた式を区切ります。上記のように: ([0-9]+)
018
019 [] 上記のように文字クラスを定義します。[0-9] は 0 ~ 9 の数字を表します
020
021 + を示します前の文字を繰り返すことができることを示します。 上記のように 1 回または複数回一致します: [0-9]+、任意の数字の組み合わせを示します
022
023 文字エスケープ、上記のように: エスケープ。
026 027 [ L] は最後を意味し、他の一致を停止します 028 029 方法は次のとおりです: 030 031 1. httpd.conf ファイルを開き、032 033 #Lo を見つけます。 adModule rewrite_module modules/mod_rewrite.so コメントを前に #034 035 2. httpd-vhosts.conf ファイルを開き、VirtualHost に書き換えルールを追加します 036 037 RewriteEngine On 038 039 書き換えルール ^ p([0-9]+).html / ?p=$1 [L] 040 041 基本的には上記の2ステップです。実は、ApacheにおけるURLアドレスの書き換えは一般的には比較的簡単です。ドキュメントから学ぶよりもはるかに早いですが、詳細を知りたい場合は、関連するドキュメントを読む必要があります。その他のルールはカスタマイズできます。覚えておいてください: すべての一致は実際には正規表現の置換プロセスです。 042 043 検索エンジンに適した URL アドレスを作成することは PHP プログラマーにとって非常に重要であるため、Apache で URL アドレスの書き換えを学習することは最も基本的な要件の 1 つになります。 044 045 046 2 番目の方法: 047 048 1. まず、書き換えモジュールがインストールされているかどうかを確認します: 049 05 0 cat httpd.conf | grep rewrite 051 LoadModule rewrite_module モジュール/ mod_rewrite.so 052 053 2. 疑似静的 HTML 接続を生成します: 054 055 (1) 疑似静的 HTML を生成します 056 057 058 を追加します
059の最後
077 [PT]: URL グローバル変換、つまり、変換された Goods31.html は、goods.php?id=31 に対応します (パラメータなしのデフォルトはこれです)
078 [R]: URL リダイレクトは、 Goods31.html にアクセスするときですgoods.php?id = 31
079
080
081にジャンプします3.アンチホットリンク:
082
083rewritecrond%{http_host}!xxxx.com [r = 301、l]
084書き直し^(.*)$ http://www.xxxx.com/warning.html [R=301,L]
085
086 xxxx.com から http://www.xxxx .com にリクエストをリダイレクトしないでください
087
088 より良いアプローチ:
089 RewriteCond %{HTTP_REFERER} !^http://(www.)?xxxx.com/.*$ [NC]
090 RewriteRule .(mp 3| rar|jpe| gif)$ http://www.xxxx.com/warning.jpg [R=301,L]
091
092 4. アンチBaidu クローラー:
093 RewriteCond %{HTTP_USER_AGENT} ^Baiduspider [ OR]
094 RewriteRule ^(.*)$ http://www.google.com [R=301,L]
095 クローラーを Baidu から goole に転送
096
097
098
099
100 PS: PHP 疑似静的メソッド
101
102 メソッド 1:
103
104 たとえば、この Web ページ
105
106 http://www.xxxx.com/soft.php/1,100、 8630.html
107
108 実際、処理されるスクリプトはsoft.phpでパラメータは1,100,8630
109
110 Soft.php?a=1&b=1=100&c=8630と同等です。この URL は難しすぎるので覚えておいてください。検索エンジンもそれを好みません。
111
112 真の静的とは、完全に生成された HTML です。
113
114 クライアントがアクセスした際に直接出力します。スクリプトの説明は不要です。トラフィックが非常に多い場合 (毎日何百万ものアクセスがある場合など)、非常に良い結果が得られます。つまり、この HTML ページはサーバー側に実際に存在します。
115
116 もちろん、ウェブサイトのトラフィックがそれほど多くない場合です。 URL 書き換えが最良の方法です (個人的な意見ですが、トラフィックが多い場合は負荷分散を考慮する必要があります。どちらでも構いません)
117
118 URL 書き換えの方法は、APACHE や IISREWRITE を含め、多数あります。 PHP スクリプトでも直接処理できます。たとえば、上記の例では、PHP スクリプトが直接処理しています (この方法の利点は、大量のトラフィックがあるときに WEB サーバーの負荷を直接軽減できることです。 PS: これも個人的な意見です:
119
120 =========== ================================= ===
121
122 PHP 疑似静的プログラムの実装方法を例に挙げてみましょう。実際、私は以前にこの方法を他のフォーラムコミュニティに投稿しました
123
124 プログラム例:
125
126 http://www.xxxx.com/soft.php /1,100,8630.html
127
128 CODE:
129
130 //この例では、サーバー変数を使用して PATH_INFO 情報を取得します。実行スクリプト名以降の部分である/1,100,8630.html
131
132 if(@$path_info =$ _SERVER["PATH_INFO"]){
133 //通常の一致パラメータ
134 if(preg_match("//(d+),(d+),(d+).html/si",$path_info,$arr_path)){
135 $gid =intval($arr_path[1]); //値 1 を取得します
136 $sid =intval($arr_path[2]); //値 100 を取得します
137 $softid =intval($arr_path[3]) //値 8630 を取得します
138 } else die("Path:Error!");
139 //soft.php?gid=1&sid =100&softid=8630 と同等
140 //とても簡単です ~)
141 方法 2:
142 開くApache の設定ファイル httpd.conf。
143 2 #LoadModule rewrite_module modules/mod_rewrite の前の # を削除します
144 3 httpd.conf に次のように追加します:
145
146 RewriteEngine On
147 #RewriteCond %{ENV:SCRIPT_URL} (?:index|dispbbs)[-0-9]+.html
148 RewriteRule ^(.*?(?:index|dispbbs))-([-0-9 ]+).html 1.php?__is_apache_rewrite=1&__rewrite_arg=2
149
150 4 番目に、3 番目のステップで、ASP ポストの URL を php ポストにマッピングします。
151 RewriteMap to lowercase int:to lower
152 RewriteCond %{QUERY_STRING} (?:boardid|page|id|replyid|star|skin)=d+ [NC]
153 RewriteRule ^ (.*(?:index|dispbbs)).asp 1.php?{to lowercase:%{QUERY_STRING}}&__is_apache_rewrite=1
154 5 httpd.conf を保存し、Apache を再起動します
155 方法 3:
156
157 関数 mod_rewrite(){
158 グローバル
159 $ _GET;
160 $nav=$ _SERVER["REQUEST_URI"]
161 $script_name=$ _SERVER["SCRIPT_NAME"];
162 $nav=substr(ereg_replace("^$script_name","",urldecode($nav)),1);
163 $nav=preg_replace("/^.ht(m){1}(l){ 0,1}$/","",$nav);//この文は .html または .htm の末尾を削除したものです
164 $vars =explode("/",$nav);
165 for( $ i=0;$i 166 $ _GET["$vars[$i]"]=$vars[$i+1]; 167 } 168 return $ _GET; 169 } 170 mod_rewrite(); 171 $yearn=$ _GET["year"];//結果は '2006' です 172 $action=$ _GET["action "] ;//結果は '_add' です 173 echo $yearn; 174 echo $action; 175 ?> 176
177 function mod_rewrite(){ 178 global $ _GET; 179 $nav= $ _SERVER["REQUEST_URI"]; 180 $script_name= $ _SERVER["SCRIPT_NAME"] 181 $nav=substr("^$script_name","", URL デコード($ nav)),1); 182 $nav=preg_replace("/^.ht(m){1}(l){0,1}$/","",$nav);/ /この文は末尾の .html または .htm を削除します 183 $vars =explode("/",$nav); 184 for($i=0;$i 185 $ _GET["$vars[$i]"]=$vars[$i+1] } 187 return 188 $ _GET } 190 mod_rewrite; (); 191 $yearn= $ _GET["year"];//結果は '2006' です 192 $action=$ _GET["action"];// 結果は '_add' です 193 echo $yearn; 194 echo $action 195 多くの場合、特定の IP へのアクセスにより CPU が 100% になる可能性があります (一部の検索エンジンによる固定クロール、多数の収集サイトによるものなど)。その他)、現時点では、サーバーのリソースを消費できないように、相手の IP をブロックする方法が必要です。Web サーバーに Rewrite モジュールがインストールされている場合は、さまざまな方法で IP をブロックできます。また、書き換えルールを使用して相手の IP をブロックしてみてください。 196 1. たとえば、特定の IP を baidu ホームページに直接リダイレクトし、Web サイトのルート ディレクトリにある .htaccess ファイルにコードを追加します。 197 RewriteCond % 123.123.123.123 [NC]RewriteRule ^(. *)$ http://www.baidu.com/$1 [R=301] IP 123.123.123.123 を制限したい IP に置き換えます 198 2. 複数の IP を実装したい場合は、次のように記述できます: 199 RewriteCond % 123.123.123.123 [OR]RewriteCond % 124.124.124.124 [NC]RewriteRule ^(.*)$ http://www.baidu.com/$1 [R=301] 上記はURLですApache Content によって書き換えられたアドレス。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。