ApacheのRewriteCondステートメントは私にとって何度も理解するのが難しい点でしたが、今回ようやくそれが何を意味するのかが大まかにわかりました。
RewriteCond は、プログラムの if ステートメントと同じです。つまり、1 つまたは複数の条件が満たされると、RewriteCond のすぐ下の RewriteRule ステートメントが実行されます。これは、RewriteCond の最も独創的で基本的な関数です。理解できましたので、以下で見てみましょう。いくつかの例を見てみましょう。
上記のステートメントの機能は、FF ブラウザを使用して Index.php ファイルにアクセスすると、一部のモバイル端末を使用して Index.m.php ファイルにアクセスできるようにすることです。ファイルindex.phpにアクセスすると、実際にはindex.L.phpにアクセスします。別のブラウザを使用してアクセスすると、index.b.phpにリダイレクトされます。より鮮明に言うと、上記のステートメントは、プログラム内の次のステートメントと同等です (PHP ステートメントを例にします):
例 2 を見てください:
RewriteCond %{HTTP_REFERER} (www.test.cn)
RewriteRule (.*)$ test.php
上記のステートメントの機能は、前のステートメントにアクセスした場合です。ページ ホスト アドレスは www.test.cn なので、現在アクセスしているページに関係なく、test.php にアクセスするようにリダイレクトされます。
例 3 を見てみましょう:
上記のステートメントの機能は、アドレスが host1、host2、または host3 の場合、test.php にジャンプすることです。ここから、RewriteCond ステートメント間のデフォルトは AND であることがわかります。OR が必要な場合は、明確に記述する必要があります。
私が収集した便利な書き換えルールをいくつか示します:
RewriteCond %{REQUEST_FILENAME} !-d //#ディレクトリが存在する場合はRewriteRuleを実行せずにディレクトリに直接アクセスします
RewriteCond %{ REQUEST_URI}! ^.*(/.css|/.js|/.gif|/.png|/.jpg|/.jpeg)$ //#これらの接尾辞を持つファイルの場合は、書き換えせずに直接ファイルにアクセスします
http://www.bkjia.com/PHPjc/440360.html