2012-06-27 2 views
0

http://httpd.apache.org/docs/2.2/rewrite/intro.html 말한다 다음 ! 문자가 정규 표현식 전에 사용할 수 있습니다 mod_rewrite를에아파치 RewriteRule의 정규식 문제

그것을 부정 할 수 있습니다. 이것은 문자열이 나머지 표현식과 일치하지 않는 경우에만 일치하는 것으로 간주됩니다.

그러나 내 설정은 첫 번째 규칙에서만 작동하지만 두 번째 규칙에서는 작동하지 않습니다. 누군가 왜 저에게 말할 수 있습니까?

RewriteCond %{HTTP_HOST} !^static\.example\.com 
RewriteCond %{HTTP_HOST} ^host\.example\.com 
RewriteRule ^(/global/.*)$ /dir1 
RewriteRule !^(/global/.*)$ /dir2 #this rule doesn't work. 
+0

왜 두 번째 정규식이 첫 번째 정규식과 일치하지 않는 항목과 일치하므로 *. 대신 사용 하시겠습니까? – flec

+0

'RewriteCond'는 그 위의 직접적인 규칙에만 적용됩니다. 이것이 의도 한 행동입니까? 또한'/ dir1' 리디렉션에'[L]'플래그를 설정하면 @ flec의 제안을 사용할 수 있습니다. –

+0

두 번째 규칙이 작동하지 않는 URL을 게시 할 수 있습니까? 그리고이 규칙은 어디에 사용됩니까 (.htaccess 또는 httpd.conf)? –

답변

0

실제로 저는 규칙을 2 개로 분할하여 작동 시켰습니다. host.example.com과 example.com 모두 잘 작동합니다. 우리가 사용할 수있는 방법을 난 아직도 원하는 그러나

RewriteCond %{HTTP_HOST} !^static\.example\.com 
RewriteCond %{HTTP_HOST} ^host\.example\.com 
RewriteRule ^(/global/.*)$ /dir1 [L] 

RewriteCond %{HTTP_HOST} !^static\.example\.com 
RewriteCond %{HTTP_HOST} ^host\.example\.com 
RewriteRule ^(.*)$ /dir2 [L] 

는 알고 "!" in RewriteRule.