允許父親 .htaccess 重定向所有資源

允許父親 .htaccess 重定向所有資源

我們正在從一個子網域遷移到另一個子網域。該特定網域包含多個網站的子集。我設定了以下重寫來處理全域重定向:

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 文件,而不必修改每個文件。

相關內容