mod_rewrite [L] フラグが期待どおりに動作しない?

mod_rewrite [L] フラグが期待どおりに動作しない?

[L] フラグは、「このルールは、この http 要求に対して処理される最後のルールである必要がある」ことを示していると思いました。

ただし、次のような 2 つのルールがある場合:

RewriteRule ^test$ php/test.php [L]
RewriteRule (.*) error.php

いつも起こるのは、http://localhost/テストerror.phpに移動し、ないtest.phpに[L]を置いたので、予想どおりに実行できました。2番目のルールをコメントアウトすると、http://localhost/テスト予想どおりに test.php に移動します。

私が本当にやろうとしているのは、mod_rewriteで404エラーをキャッチすることです。私がやろうとしていることが単に間違っている可能性もあります。しかし、なぜキャッチオールルールがアクティブになっているのか知りたいのです。やったルールの後に[L]を付けます^test

大きなリストが見つかりましたここサーバー管理者は、認識されたディレクトリで始まる一連のパスをリストしますが、私は単に優れた包括的なルールを使用することでこれを回避したいと考えました。

答え1

ルールによってクライアントがリダイレクトされる場合、クライアントがリダイレクトされたリクエストを行うと、ルール リストの先頭から再びルールが再入力されます。

関連情報