2022-12-12 .htaccess RewriteRuleの注意点
.htaccess RewriteRuleの注意点
[L]
フラグの挙動がわかりにくかったのでメモ。
ちょっとした問題ですが、.htaccessファイルに次の記述があるとき、 index1.html にアクセスすると、最終的に開かれるファイルは何になるでしょうか。
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule index1\.html /index2.html [L] RewriteRule index2\.html /index3.html [L] </IfModule>
{index1.htmlをindex2.htmlに変換して、[L]フラグにより変換を一度終了}
↓
{URLが変更されたので処理が戻る}
↓
{二週目はindex2.htmlになっているので、一つ目のルールを飛ばして二つ目に適合してindex3.htmlに変換される}
↓
{URLが変更されたので処理が戻る}
↓
{三週目はindex3.htmlになっているので、どちらのルールにも適合しない}
↓
{URLに変更がなかったので処理が進む}
.htaccess に RewriteRule 書くときは、[L]フラグをつけてもそこで終了しないかもよ?って話。 - Qiita
v2.3 からは END フラグが使える。
「[END]フラグを使うと、それ以降の書き換えは抑制されるよ」
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule index1\.html /index2.html [END] RewriteRule index2\.html /index3.html [END] </IfModule>