php - Apache 재작성에 관한 질문
我想大声告诉你
我想大声告诉你 2017-05-16 12:59:47
0
1
494

아파치의 Rewrite 기능을 배울 때. 플래그의 L이 무엇을 하는지 모르겠습니다.
예를 들어 다음 코드는

으아아아

다음 코드는 실행하기 싫으니 그냥 댓글 달고 직접 삭제하면 되지 않을까요? 왜 L을 사용해야 할까요

我想大声告诉你
我想大声告诉你

모든 응답(1)
習慣沉默

구성 파일에 따르면 후자의 문장은 실제로 불필요합니다. 그러나 이는 귀하가 제공한 구성 예에만 국한됩니다. L이 쓸모없다는 의미는 아니며, L에는 여전히 자체 적용 시나리오가 있습니다L没用,L还是有它自己的应用场景的

假设

RewriteRule /([0-9]+).html /test1.php?id=
RewriteRule /(.*) /test2.php?id=

这个配置,我的请求是123.html, 那么在请求到达apache的时候,apache会从上到下开始匹配规则:
第一步, 匹配RewriteRule /([0-9]+).html /test1.php?id=, 发现匹配通过, 因为没有标记停止,所以继续向下执行代码
第二步,匹配RewriteRule /(.*) /test2.php?id=, 发现匹配通过,因为是最后一条规则,且是通过的规则,则最终请求被导向test2.php?id=123.html的页面

但是,如果是这样:

RewriteRule /([0-9]+).html /test1.php?id= [L]
RewriteRule /(.*) /test2.php?id=

在第一条匹配通过之后,发现有标记L,则apache停止向下继续匹配,而是直接就导向了test1.php?id=123的页面; 而其他的请求(比如:abc.html)只有当第一条规则不通过的时候,才会继续匹配第二条规则, 请求被导向至test2.php?id=abc.html

가설🎜 으아아아 🎜이 구성을 사용하면 내 요청은 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🎜로 전달되는 경우에만 두 번째 규칙과 계속 일치합니다.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿