ホームページ >バックエンド開発 >PHPチュートリアル >Apache_PHP チュートリアルの RewriteCond ルール パラメーターの詳細な紹介

Apache_PHP チュートリアルの RewriteCond ルール パラメーターの詳細な紹介

WBOY
WBOYオリジナル
2016-07-20 11:16:39845ブラウズ

Apache の RewriteCond ステートメントは私にとってずっと難解な点で、何度も理解しようとしましたが、今回ようやくそれが何を意味するのかが大まかにわかりました。 ​

RewriteCond はプログラムの if ステートメントと同じです。つまり、1 つまたは複数の条件が満たされると、RewriteCond のすぐ下の RewriteRule ステートメントが実行されます。これが RewriteCond の最も独創的で基本的な関数です。理解を容易にするために、次のことを考えてみましょう。いくつかの例を見てみましょう。

コードをコピー コードは次のとおりです。
リライトエンジンオン
RewriteCond %{HTTP_USER_AGENT} ^Mozilla//5/.0.*
RewriteRuleindex.phpindex.m.php
RewriteCond %{HTTP_USER_AGENT} ^Lynx.*
RewriteRule インデックス.php インデックス.L.php
RewriteRule インデックス.php インデックス.b.php


上記のステートメントの機能は、FF ブラウザを使用して Index.php ファイルにアクセスすると、一部のモバイル端末を使用して Index.m.php ファイルにアクセスできるようにすることです。別のブラウザを使用してアクセスすると、index.php ファイルにリダイレクトされます。より鮮明に言うと、上記のステートメントは、プログラム内の次のステートメントと同等です (PHP ステートメントを例に挙げます):

コードをコピー コードは次のとおりです。
if($_SERVER['HTTP_USER_AGENT'] == 'Mozilla/5.0')
{
//index.m.phpにアクセスします
}
else if($_SERVER['HTTP_USER_AGENT'] == 'Lynx')
{
//index.L.phpにアクセスします
}
それ以外
//index.b.phpにアクセスします


例 2 を見てください:
RewriteCond %{HTTP_REFERER} (www.test.cn)
RewriteRule (.*)$ test.php
上記のステートメントの機能は、以前にアクセスしたページのホスト アドレスが www.test.cn であれば、現在どのページにアクセスしているかに関係なく、test.php にアクセスすることになります。
例 3 を見てください:

コードをコピー コードは次のとおりです。
RewriteCond %{REMOTE_HOST} ^host1.* [OR]
RewriteCond %{REMOTE_HOST} ^host2.* [OR]
RewriteCond %{REMOTE_HOST} ^host3.*
RewriteRule (.*)$ test.php


上記のステートメントの機能は、アドレスが 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)$ //#これらの接尾辞を持つファイルの場合は、そのファイルにアクセスします直接書き直すことはできません

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/372370.html技術記事 Apache の RewriteCond ステートメントは私にとっていつも難しい点でした。何度も理解しようとしましたが、今回ようやく RewriteCond が何を意味するのかがわかりました...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。