가설🎜
으아아아
🎜이 구성을 사용하면 내 요청은 123.html이고 요청이 Apache에 도달하면 Apache는 위에서 아래로 규칙 일치를 시작합니다. 첫 번째 단계 matchRewriteRule /([0-9]+ ) .html /test1.php?id=$1, 중지할 표시가 없기 때문에 일치가 통과된 것으로 확인되었으므로 계속해서 코드를 실행합니다. 두 번째 단계, matchRewriteRule /(. *) /test2 .php?id=$1, match가 통과된 것으로 확인됩니다. 마지막 규칙이고 통과된 규칙이므로 최종 요청은 test2 페이지로 이동됩니다. .php?id=123.html 🎜
🎜그러나 그렇다면: 🎜
으아아아
🎜첫 번째 일치 항목이 통과되고 L 표시가 발견되면 Apache는 아래쪽 일치를 중지하고 test1.php?id=123 페이지 및 기타 요청으로 직접 연결됩니다(예: 예: abc.html)은 첫 번째 규칙이 실패하고 요청이 test2.php?id=abc.html🎜로 전달되는 경우에만 두 번째 규칙과 계속 일치합니다.
구성 파일에 따르면 후자의 문장은 실제로 불필요합니다. 그러나 이는 귀하가 제공한 구성 예에만 국한됩니다.
L
이 쓸모없다는 의미는 아니며,L
에는 여전히 자체 적용 시나리오가 있습니다L
没用,L
还是有它自己的应用场景的假设
这个配置,我的请求是123.html, 那么在请求到达apache的时候,apache会从上到下开始匹配规则:
第一步, 匹配
RewriteRule /([0-9]+).html /test1.php?id=
, 发现匹配通过, 因为没有标记停止,所以继续向下执行代码第二步,匹配
RewriteRule /(.*) /test2.php?id=
, 发现匹配通过,因为是最后一条规则,且是通过的规则,则最终请求被导向test2.php?id=123.html
的页面但是,如果是这样:
在第一条匹配通过之后,发现有标记
가설🎜 으아아아 🎜이 구성을 사용하면 내 요청은 123.html이고 요청이 Apache에 도달하면 Apache는 위에서 아래로 규칙 일치를 시작합니다.L
,则apache停止向下继续匹配,而是直接就导向了test1.php?id=123
的页面; 而其他的请求(比如:abc.html)只有当第一条规则不通过的时候,才会继续匹配第二条规则, 请求被导向至test2.php?id=abc.html
첫 번째 단계 match
RewriteRule /([0-9]+ ) .html /test1.php?id=$1
, 중지할 표시가 없기 때문에 일치가 통과된 것으로 확인되었으므로 계속해서 코드를 실행합니다.두 번째 단계, match
RewriteRule /(. *) /test2 .php?id=$1
, match가 통과된 것으로 확인됩니다. 마지막 규칙이고 통과된 규칙이므로 최종 요청은test2 페이지로 이동됩니다. .php?id=123.html
🎜 🎜그러나 그렇다면: 🎜 으아아아 🎜첫 번째 일치 항목이 통과되고L
표시가 발견되면 Apache는 아래쪽 일치를 중지하고test1.php?id=123
페이지 및 기타 요청으로 직접 연결됩니다(예: 예: abc.html)은 첫 번째 규칙이 실패하고 요청이test2.php?id=abc.html🎜로 전달되는 경우에만 두 번째 규칙과 계속 일치합니다.