ApacheでのRewriteCondルールパラメータの説明

5345 ワード

ApacheでのRewriteCondルールパラメータの説明(回転)
に発表
2011年02月21日  
から
夢三秋
CodeIgniter2.0はもう20日以上出てきましたね~つまり私がずっと使っていたphpフレームワーク(CI).ずっとjqueryを研究していたので、CIを忘れてしまいました.ふふ~~今日は会社のことがあまり多くないので、CI 2を熟知し始めました.0のいくつかの新しい特性~~ちょうどもう一度CIのいくつかの特性を復習します.朝見るものは多くありませんが、その中にはこのような知識があります.CIではデフォルトでindexです.phpファイルはあなたのURLに含まれます.urlからこのデフォルトのindexを削除したい場合は.phpは、Apacheの強力なRewrite機能を使う必要があります.CI公式ドキュメントで示される解決策は、次のとおりである.
作成.htaccessファイルは、Webサイトのルートディレクトリの下に配置されます.ファイルの内容は次のとおりです.1 RewriteCond $1 !^(index\.php|images|robots\.txt) 2 RewriteRule ^(.*)$ /index.php/$1 [L]
ほほほ~~本人はAppacheのこれらの规则に対してもあまり深く研究したことがないため、そこでネット上でこのappacheのRewriteCondについての少しの资料を探して、书くのがとても详しくて、みんなに分かち合います:
———————————小さく分割して———————————————————————Apacheの中のRewriteCond文は私にとってずっと難点で、何度もそれを理解しようとしたが、構造がなく、今回はやっとその意味を知った.RewriteCondは、我々のプログラムのif文のように、ある条件またはいくつかの条件に合致すればRewriteCondの下に隣接するRewriteRule文を実行することを示しています.これがRewriteCondの最も原始的で基礎的な機能であり、理解しやすいように、いくつかの例を見てみましょう.1 RewriteEngine on 2 RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla\/5\.0.* 3 RewriteRule  index.php            index.m.php 4
  5 RewriteCond  %{HTTP_USER_AGENT}  ^Lynx.* 6 RewriteRule  index.php            index.L.php 7
  8 RewriteRule  index.php            index.b.php
上の文の役割は、FFブラウザでindexにアクセスする場合です.phpというファイルにアクセスするとindexに自動的にアクセスさせます.m.phpというファイルは、いくつかのモバイル端末でアクセスするとindexにアクセスさせます.phpというファイルへのアクセスは実際にindex.L.phpに行って、他のブラウザでアクセスするとindexにジャンプさせます.b.php.イメージを言うと、上の文はプログラムの下の文と同じです(PHP文を例にとります).01 if ( $_SERVER [ 'HTTP_USER_AGENT' ] ==  'Mozilla/5.0' ) 02 { 03 // index.m.php 04 } 05 else   if ( $_SERVER [ 'HTTP_USER_AGENT' ] ==  'Lynx' ) 06 { 07 // index.L.php 08 } 09 else 10 // index.b.php
例2を見てみましょう.1 RewriteCond %{HTTP_REFERER} (www.test.cn) 2 RewriteRule (.*)$ test.php
上の文の役割は、前のページのホストアドレスがwww.testである場合です.cnは、現在アクセスしているページにかかわらず、testにジャンプします.phpのアクセス.
例3を見てみましょう.1 RewriteCond %{REMOTE_HOST} ^host1.* [OR] 2 RewriteCond %{REMOTE_HOST} ^host2.* [OR] 3 RewriteCond %{REMOTE_HOST} ^host3.* 4 RewriteRule (.*)$ test.php
上記の文の役割は、あなたのアドレスがhost 1またはhost 2またはhost 3の場合、testにジャンプすることです.php.ここから,RewriteCond文間のデフォルトはANDであり,ORが欲しい場合は明確に書くことが分かる.
以下は、自分がコレクションしたいくつかの有用な書き換えルールです.
view source
print
? 1 RewriteCond %{REQUEST_FILENAME} !-f   // , , RewriteRule.( ) 2
  3 RewriteCond %{REQUEST_FILENAME} !-d   //# RewriteRule 4
  5 RewriteCond %{REQUEST_URI} !^.*(\.css|\.js|\.gif|\.png|\.jpg|\.jpeg)$ //# , , Rewrite
———————————小さく分割する—————————————————————本文は以下から抜粋する.http://hi.baidu.com/%D2%BB%CE%C4%CC%EC/blog/item/ace7f14e19851cc4d0c86af2.html