당신이 찾고있는 것이 RewriteCond
이라고 생각합니다. 조건부로 다시 쓰기 규칙을 적용 할 수 있습니다.
RewriteCond %{REQUEST_FILENAME} -d
당신은 다음과 같이 당신의 RewriteRule
위를 넣어 사용 :
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule /([^/]+) processDir.php?dir=$1 [B,QSA]
이이 질문의 방법 또는 당신의 대답 중 하나와 함께 작동합니다, 뭔가가 디렉토리 인 경우이 사람은 검사 주목해야 할 중요한 점은 -d
플래그가 규칙을 적용하기 전에 요청이 유효한 디렉토리인지 먼저 확인합니다. 이는 원하는 것처럼 보입니다.
내가 수집 한 것의 두 번째 부분은 중첩 된 디렉토리에 관한 것입니다. 당신의 정규 표현식은 특히 하나의 디렉토리 만 찾는다 (슬래시는 없다). 당신이 변경하려는 경우, 당신은 같은 것을 할 수 있습니다
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule /?some_dir/(.*) processDir.php?dir=$1 [B,QSA]
이 some_dir
다음 유효한 디렉토리를 가지고 당신의 PHP 파일에이 공급됩니다.
마지막으로주의해야 할 점은이 모든 것을 루트 .htaccess
파일에 넣지 않아도된다는 것입니다. 재 작성하려는 디렉토리에 .htaccess
파일을 넣을 수 있습니다. 이 방법을 사용하는 것과 다른 방법을 사용하는 것의 차이는별로 없지만, 내가하는 일을 확신하지 못한다면 구문을 단순화 할 수 있다는 것을 알았습니다.
굉장합니다, 감사합니다. 지금 +1하고,이 모든 것을 시험해 볼 기회를 얻었다면 (또는 그냥 받아 들여서) 다시 말하겠습니다. [B, QSA]는 무엇을합니까 (당신도 물론 연결할 수 있습니다)? –
@ Yar B는 이스케이프 용이고 QSA는 쿼리 문자열 용입니다. , 나는 다만 그 (것)들을 당신의 포스트에서 혼자 leff. 자세한 내용은 http://httpd.apache.org/docs/current/rewrite/flags.html을 참조하십시오. –