![允许父 .htaccess 重定向所有资产](https://linux22.com/image/660487/%E5%85%81%E8%AE%B8%E7%88%B6%20.htaccess%20%E9%87%8D%E5%AE%9A%E5%90%91%E6%89%80%E6%9C%89%E8%B5%84%E4%BA%A7.png)
我们正在从一个子域迁移到另一个子域。此特定域包含多个网站子集。我已设置以下重写来全局处理重定向:
在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 文件,而不必修改每个文件。