ホームページ >バックエンド開発 >PHPチュートリアル >Apache_PHP チュートリアルの RewriteCond ルール パラメーターの詳細な紹介
Apache の RewriteCond ステートメントは私にとってずっと難解な点で、何度も理解しようとしましたが、今回ようやくそれが何を意味するのかが大まかにわかりました。
RewriteCond はプログラムの if ステートメントと同じです。つまり、1 つまたは複数の条件が満たされると、RewriteCond のすぐ下の RewriteRule ステートメントが実行されます。これが RewriteCond の最も独創的で基本的な関数です。理解を容易にするために、次のことを考えてみましょう。いくつかの例を見てみましょう。
コードをコピー コードは次のとおりです。
上記のステートメントの機能は、FF ブラウザを使用して Index.php ファイルにアクセスすると、一部のモバイル端末を使用して Index.m.php ファイルにアクセスできるようにすることです。別のブラウザを使用してアクセスすると、index.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} !-f //ファイルが存在する場合、以下のRewriteRuleを実行せずに直接ファイルにアクセスします(ファイルが存在しない場合、またはファイルが存在しない場合は書き換えが行われます)
RewriteCond %{REQUEST_FILENAME} !-d //#ディレクトリが存在する場合、RewriteRuleを実行せずにディレクトリに直接アクセスします
RewriteCond %{REQUEST_URI} !^.*(/.css|/.js|/.gif|/.png|/.jpg|/.jpeg)$ //#これらの接尾辞を持つファイルの場合は、そのファイルにアクセスします直接書き直すことはできません