한 하위 도메인에서 다른 하위 도메인으로 이전하는 중입니다. 이 특정 도메인에는 여러 웹사이트의 하위 집합이 있습니다. 전역적으로 리디렉션을 처리하기 위해 다음 재작성을 설정했습니다.
( docroot/.htaccess
"규칙 #1")
RewriteEngine On
RewriteCond %{HTTP_HOST} ^virtual\.example\.com$
RewriteRule ^(.*)$ http://events.example.com/$1 [L,R=301]
자체 재작성 규칙이 있는 일부 사이트를 제외하고는 일반적으로 작동합니다. 예를 들어 /roadshow/2015/
다음과 같은 포괄 규칙이 있습니다.
( docroot/roadshow/2015/.htaccess
"규칙 #2")
RewriteCond %{REQUEST_URI} ^(.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\.php$
RewriteRule .* framework/main.php?url=%1&%{QUERY_STRING} [L]
문제:/roadshow/2015/
규칙 #1이 존재하지 않는 것처럼 페이지가 계속 로드됩니다.
내가 여기서 무엇을 놓치고 있는 걸까요? :)
답변1
하위 폴더에 있는 .htaccess 파일의 mod_rewrite 지시문은 상위 폴더에 있는 명령보다 우선합니다. RewriteOptions Inherit
각 하위 폴더의 .htaccess 파일에서 사용해 보세요(참조http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriteoptions).
Apache 2.4.8 이상을 실행하는 경우 RewriteOptions InheritDown을 사용하면 각 파일을 수정하지 않고 모든 하위 .htaccess 파일에 자동으로 적용할 수 있습니다.