Isapi는 업그레이드를 2에서 3까지 다시 작성합니다 - 쿼리 문자열을 사용할 수 없습니까?
-
23-08-2019 - |
문제
조금 늦었지만 방금 Isapi Rewrite 버전 2에서 버전 3으로 업그레이드했습니다.
다음 스타일의 규칙에 문제가 있습니다.
RewriteRule ^/seo-friendly/(\?(.*))? /test/index.cfm?page=home&$2
여기에서는 추가 쿼리 문자열 매개 변수가 다시 작성된 URL로 전달됩니다.
이것은 IR2에서 잘 작동했지만 IR3에서 추가 매개 변수를 전달하지 못합니다. 각 버전의 Regex Tester .Exe 유틸리티가 두 개를 가지고 있으므로 시도했습니다.
내가 입력하면 /seo 친화적/? hello = world, IR2의 Regex Tester가 말합니다 $ 1 :? hello = 세계 그리고 $ 2 : Hello = World완벽합니다.
그러나 IR3은 말합니다 $ 0 : /seo 친화적 / 그리고 $1 그리고 $2 비어 있습니다.
쿼리 문자열 변수에 액세스 할 수없는 것 같습니다.
문서에서 언급 된이 깃발을 찾았습니다.
o (정상화)
처리 전에 문자열을 정규화합니다. 정규화에는 URL 인코딩, 불법 문자 등의 제거가 포함됩니다. 또한 URI의 IIS 정규화는 쿼리 문자열을 완전히 제거합니다. 따라서 쿼리 문자열이 필요한 경우 정규화를 사용해서는 안됩니다.
그러나 나는이 깃발을 내 규칙에 대해 설정하지 않았습니다. 이 (명백한) 정규화를 중지하도록 설정할 수있는 전역 규칙이 있습니까?
해결책
Isapi Rewrite가 Apache의 mod_rewrite와 거의 동일하게 작동하면 QSA 플래그를 설정하면됩니다.
RewriteRule ^/seo-friendly/$ /test/index.cfm?page=home [QSA]
제휴하지 않습니다 StackOverflow