ApacheのRewrite機能を学ぶとき。 flags の L が何をするのかわかりません たとえば、次のコード:
次のコードは実行したくないので、直接コメントして削除すれば良いのではないでしょうか?なぜ L
設定ファイルから判断すると、後の文は確かに不要です。ただし、これは指定した構成例にのみ限定されます。 L没用,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
RewriteRule /([0-9]+) を照合します。 /test1.php?id=$1
RewriteRule /([0-9]+).html /test1.php?id=
RewriteRule /(.*) /test2.php?id=
test2.php?id=123.html
RewriteRule /(.*) /test2 .php?id =$1
test2.php? のページに送信されます。 id=123.html
しかし、そうであれば:
最初の試合が終わった後、マークが見つかりましたL,则apache停止向下继续匹配,而是直接就导向了test1.php?id=123的页面; 而其他的请求(比如:abc.html)只有当第一条规则不通过的时候,才会继续匹配第二条规则, 请求被导向至test2.php?id=abc.html
test1.php?id=123
test2.php?id=abc.html
設定ファイルから判断すると、後の文は確かに不要です。ただし、これは指定した構成例にのみ限定されます。
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