kurokumi回答ポイント 60ptウォッチ 1

mod_rewriteについて、条件に一致したら、それ以降の条件を無視する方法がわかりません。


RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^abc.html$ rewrite1.php [L] #条件1
RewriteRule ^.*$ rewrite2.php [L] #条件1に一致しなかったときのみ評価したい

以上の記述の.htaccessがあるディレクトリへのWebからのアクセス
abc.htmlはrewrite1.phpではなく、rewrite2.phpが出力されます。

厳密には、条件1を実行して置換した後、さらに条件2で置換しているようです。
その証拠に条件2を変えた以下の条件2つで
RewriteRule ^abc.html$ rewrite1.php [L] #条件1はそのまま
RewriteRule ^rewrite1.php$ rewrite2.php [L] #条件2は変えた
abc.htmlへのアクセスが
abc.html→rewrite1.php→rewrite2.phpとなり、rewrite2.phpが
出力されます。

マニュアルには、[L]フラグは、
「ここで書き換え処理を中止し、それ以上の書き換えルールを適用しない」
とあります。
なのに、なぜこのような動作になるのかが理解できません。

※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
ログインして回答する

ベストアンサー

その他の回答

この質問へのコメント

コメントはありません

この質問への反応(ブックマークコメント)

質問の情報

登録日時
2006-05-12 18:00:21
終了日時
2006-05-17 12:32:12
回答条件
1人3回まで

この質問のカテゴリ

この質問に含まれるキーワード

mod_rewrite174.htaccess519PHP7798ABC440HTML5036ディレクトリ1525フラグ135マニュアル710適用908

人気の質問

メニュー

PC版