일치하는 Rewritecond에서 mod_rewrite 실행을 중지하십시오

StackOverflow https://stackoverflow.com/questions/229007

  •  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은 내부 리디렉션에서 추가 라운드를 허용하기 때문에 끝보다 더 나쁩니다. 끝 만 진정으로 멈 춥니 다. → 세부
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top