2009-05-08 4 views
5

한다 RewriteCond RewriteCond에서 하위 디렉토리를 일치시키는 방법은 무엇입니까?

RewriteCond %{REQUEST_URI} !^/foo/ 

에 대한 적절한 정규식에 문제가 작품이 예상대로, 즉,/foo는 /로 시작하는 모든 URL로 재 작성을 다음 적용되지 않습니다.

RewriteCond %{REQUEST_URI} !^/foo/bar/ 

반면 예상대로 작동하지 않습니다./foo/bar /로 시작하는 URL은 여전히 ​​재 작성 중입니다.

서브 디렉토리를 제외시키기위한 적절한 정규식은 어떻게 입력합니까?

+0

어떻게 실제 규칙이 보여요 처럼? – Gumbo

+0

제대로 작동합니다. RewriteLogLevel을 3 이상으로 설정하고 질문에 추가 할 수 있습니까? –

답변

7

규칙이 적용되는 내부 리디렉션의 새 URL 일 수 있습니다. L flag은 그렇게합니다.

[...]를 RewriteRule은 (a 당 디렉토리 문맥 재 기입 할 때 자주 발생) 내부 리디렉션을 생성하는 경우,이 요청을 재 주입되며, 처리는 제 RewriteRule부터 반복되게된다.

초기 URL 경로가 "/ foo는/바"로 시작하지 않았다 있는지 확인하려면 request line (THE_REQUEST variable 참조) 대신 확인 :

RewriteCond %{THE_REQUEST} !^[A-Z]+\ /foo/bar/ 
RewriteRule … 
+0

어떻게, 왜 작동하는지 모르겠 음 – edgars

+0

@ 검보 : 제안에 사용한 정규 표현식을 정확하게 설명해 주시겠습니까? 그것도 나를 위해 일하고, 그것은 첫 번째 GET과 일치하지만 추측 '/'이유는 '/ foo/bar /'전에 도메인이없는 이유를 이해할 수 없다. – Stratboy

+0

@Stratboy 나는 링크 된 페이지 모든 것을 설명하십시오. 글쎄,'^ [A-Z] + \/foo/bar /'패턴은 서버의 HTTP 해석기에서 볼 수있는 HTTP 요청 행을 검사하며 패턴이 일치하지 않을 경우에만 조건이 참입니다. 어쩌면 그것은 당신을 혼란스럽게하는'\'일지 모르지만 그것은 여전히 ​​패턴의 일부입니다. – Gumbo

관련 문제