일치하는 Rewritecond에서 mod_rewrite 실행을 중지하십시오
-
04-07-2019 - |
문제
IIS에서 무료 버전의 Helicon Isapi Rewrite를 실행하고 있으며 동일한 재 작성 규칙을 통해 여러 사이트가 실행됩니다. 모든 규칙이 모든 사이트에 적용되었으므로 지금까지는 '지금까지는 괜찮습니다. 최근에 모든 규칙을 실행하고 싶지 않은 새 사이트를 추가했습니다. 이 사이트에 대한 요청을 자체 규칙을 실행 한 후 규칙 세트에서 벗어날 수있는 방법이 있습니까?
나는 운이없이 다음을 시도했다. mysite.com에 대한 모든 요청은 404를 초래합니다. 내가 찾고있는 것은 아무것도하지 않고 [L]를 실행하는 마지막 규칙으로 표시되는 규칙이라고 생각합니다.
## New site rule for mysite.com only
RewriteCond Host: (?:www\.)?mysite\.com
RewriteRule /content([\w/]*) /content.aspx?page=$1 [L]
## Break out of processing for all other requests to mysite.com
RewriteCond Host: (?:www\.)?mysite\.com
RewriteRule (.*) - [L]
## Rules for all other sites
RewriteRule ^/([^\.\?]+)/?(\?.*)?$ /$1.aspx$2 [L]
...
해결책
WebDav 폴더에서 mod_rewrite를 중지하기 위해 비슷한 일을했습니다.
# stop processing if we're in the webdav folder
RewriteCond %{REQUEST_URI} ^/webdav [NC]
RewriteRule .* - [L]
그것은 당신의 목적에도 효과가 있어야합니다. 그렇지 않거나 추가 참조에 관심이있는 경우이 이전 질문을 참조하십시오. mod_rewrite의 디렉토리를 어떻게 무시합니까?
다른 팁
그것을 스스로 작성 하시겠습니까?
RewriteCond Host: (?:www\.)?mysite\.com
RewriteRule ^(.*)$ $1 [QSA,L]
나는 Isapi가 구문을 다시 작성하지만 켜져 있습니다 iirf, "Break Out"규칙은 다음과 같습니다.
## Break out of processing for all other requests to mysite.com
RewriteCond %{SERVER_NAME} ^(?:www\.)?mysite\.com$
RewriteRule (.*) - [L]
또는
## Break out of processing for all other requests to mysite.com
RewriteCond %{HTTP_HOST} ^(?:www\.)?mysite\.com$
RewriteRule (.*) - [L]
각각의 경우 규칙은 "다시 작성하지 않고 (더 이상 규칙을 처리하지 않음)"라고 표시되며 사용 된 호스트 이름이 mysite.com 또는 www.mysite.com 일 때 적용됩니다. [L] 플래그는 "더 이상 규칙을 처리하지 마십시오"라고 말하는 부분이며 - 교체는 "다시 쓰지 마십시오"라고 말하는 부분입니다.
RewriteRule ^ - [END]
.
적어도 하나의 숯이 필요하기 때문에 틀 렸습니다..*
~할 수 있었다 덜 효율적이어야합니다- L은 내부 리디렉션에서 추가 라운드를 허용하기 때문에 끝보다 더 나쁩니다. 끝 만 진정으로 멈 춥니 다. → 세부
제휴하지 않습니다 StackOverflow