2010-02-08 3 views
2

많은 RewriteRules가있는 .htaccess 파일이 있습니다..htaccess에서 [L] 시뮬레이션하는 방법

이미 존재하는 파일과 디렉토리가 각각 RewriteCond/RewriteRule 쌍을 통과하지 않도록 제외 할 수 있습니까?

이 :

RewriteCond %{REQUEST_FILENAME} -f 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule .* - [F,L] 

가 htaccess로 컨텍스트 내의 this SO question:

, [L]에 따른 중지 mod_rewrite를 강제하지 않을 신뢰성 때문에 작동하지 않을 것이다. 내부 하위 요청이 계속 트리거됩니다.

어떻게하면됩니까? 또는 조건이 적용되면 과 같은 제어 구조입니다. 그렇지 않으면이 규칙 블록을 건너 뛰고 건너 뛰고 mod_rewrite에서 끝내시겠습니까?

+0

가에 Serverfault – Steen

+0

그래에 게시 할 경우, 나는 내 마지막 mod_rewrite를 질문 이미 토론을했다. 글쎄요, 5 명이 그렇게 느낀다면, 꼭해야한다면 그것을 마이그레이션 할 수 있습니다. 그러나 모든 종류의 HTML 질문에 대답하는 한, mod_rewrite 질문보다 프로그래밍에 훨씬 더 적은 * 있습니다. 나는 mod_rewrite 질문을 계속해서 게시 할 것이다. (어떤 식 으로든 당신을 여기에서 공격하지 않는 @Steen. 이것은 바로 이런 경우에 나올 필요가있었습니다.) –

+0

건배. 다행히 기회를 포착하는 것이 중요합니다. 중요한 것은 당신이 당신의 질문에 답을 얻는 것입니다, 당신이 한 것처럼 보입니다. – Steen

답변

1

정규 파일 (-f)이 디렉토리 (-d) 일 수 없기 때문에 두 조건을 동시에 수행 할 수없는 문제가 있습니다. 대신이 시도 :

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule .* - [L] 
+0

(머리를 때리는) 물론. 감사합니다 검보. 나는이 문맥에서'[L]'이 따옴표가 말하는 것에도 불구하고 작동 할 수 있습니까? –

+0

괜찮 으면, [NS] 플래그를 규칙에 추가 할 수 있습니다 (즉, [L, NS]). 이는 내부 하위 요청을 무시한다는 의미입니다. 가장 좋은 방법은 그것을 빨고 불행하게도, mod_rewrite는 약간의 검은 예술이다 : – Paolo

+0

이상한. 누가'-d'가 후행 슬래시'www.example.com/directory /'로 요청 된 자원에 적용되지 않는지 아는 사람이 있습니까? –

관련 문제