ApacheのRewrite機能を学ぶとき。 flags の L が何をするのかわかりません
たとえば、次のコード:
次のコードは実行したくないので、直接コメントして削除すれば良いのではないでしょうか?なぜ L
を使用する必要があるのですか習慣沉默2017-05-16 13:01:47
設定ファイルから判断すると、後の文は確かに不要です。ただし、これは指定した構成例にのみ限定されます。 L
没用,L
がまだ独自のアプリケーション シナリオを持っているという意味ではありません
仮説
リーリーこの構成では、リクエストは 123.html であり、リクエストが Apache に到達すると、Apache はルールを上から下に照合し始めます。
最初のステップでは、RewriteRule /([0-9]+) を照合します。 /test1.php?id=$1
は、停止するマークがないため、一致が成功したことがわかりました。そのため、コードの実行を続けます RewriteRule /([0-9]+).html /test1.php?id=
, 发现匹配通过, 因为没有标记停止,所以继续向下执行代码
第二步,匹配RewriteRule /(.*) /test2.php?id=
, 发现匹配通过,因为是最后一条规则,且是通过的规则,则最终请求被导向test2.php?id=123.html
2 番目のステップ、一致 RewriteRule /(.*) /test2 .php?id =$1
の場合、これは最後のルールであり、渡されたルールであるため、一致が渡されたことがわかり、最後のリクエストは test2.php? のページに送信されます。 id=123.html
しかし、そうであれば:
リーリー最初の試合が終わった後、マークが見つかりましたL
,则apache停止向下继续匹配,而是直接就导向了test1.php?id=123
的页面; 而其他的请求(比如:abc.html)只有当第一条规则不通过的时候,才会继续匹配第二条规则, 请求被导向至test2.php?id=abc.html