我在目录层次结构的多个级别中都有 .htaccess 文件,每个文件都包含 RewriteRules。但是,当对子目录中的文件发出请求时,只有嵌套最深的 .htaccess 文件中的规则(直到请求文件的级别)才会被处理。即使子目录中只有一行“RewriteEngine On”,也足以“禁用”更高目录中定义的所有重写。这在 apache 和 litespeed httpd 中都会发生。
我曾期望(但找不到其他信息)所有 RewriteRules 都会合并为一个规则集(可能最后处理更深的级别)。然而,这似乎并没有发生。
相当困惑:) 我不明白什么?
谢谢,迈克。
答案1
你已经RewriteOptions Inherit
分别设定了吗.htaccess
?
在每个目录上下文中,这意味着父目录的 .htaccess 配置的条件和规则会被继承。从父范围继承的规则在子范围中指定的规则之后应用。
http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriteoptions