我们正在从一个子域迁移到另一个子域。 这个特定的域名有几个网站的子集。 我已经设置了以下重写来处理全局redirect:
在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不存在一样。
我在这里错过了什么? 🙂
在子文件夹中的.htaccess文件中的mod_rewrite指令将胜过父文件夹中的文件 – 尝试在每个子文件夹的.htaccess文件中使用RewriteOptions Inherit (请参阅http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriteoptions )。
如果您正在运行Apache 2.4.8或更高版本,则可以使用RewriteOptions InheritDown自动应用于所有子级.htaccess文件,而不必修改每个.htaccess文件。