Apache 为什么Mod_只重写URL路径中最深文件夹的.htaccess文件夹中的执行指令?
我正在Windows7机器上运行XAMPP。我在Apache 2.4.10安装中启用了Mod_Rewrite。我已将.htaccess文件放置在:Apache 为什么Mod_只重写URL路径中最深文件夹的.htaccess文件夹中的执行指令?,apache,.htaccess,mod-rewrite,redirect,Apache,.htaccess,Mod Rewrite,Redirect,我正在Windows7机器上运行XAMPP。我在Apache 2.4.10安装中启用了Mod_Rewrite。我已将.htaccess文件放置在: /.htaccess /category/.htaccess /类别/subcat/.htaccess /product/.htaccess 在我过去使用Mod_Rewite的每台服务器上,如果我请求/category/subcat/some-file.html,它会 评估位于URL路径中引用的最深文件夹中的.htaccess中的所有规则(即/
- /.htaccess
- /category/.htaccess
- /类别/subcat/.htaccess
- /product/.htaccess
- 评估位于URL路径中引用的最深文件夹中的.htaccess中的所有规则(即/category/subcat/.htaccess)李>
- 如果请求的URL与/category/subcat/.htaccess文件中的任何规则不匹配,它将向上移动一个目录,并评估/category/.htaccess中的规则李>
- 如果请求的URL与/category/.htaccess文件中的任何规则都不匹配,那么它将上移到文档根目录,并评估/htaccess文件中的规则(如果存在)
DocumentRoot "C:/xampp/htdocs"
<Directory "C:/xampp/htdocs">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
你知道会发生什么吗
提前谢谢 默认情况下,只计算每个目录上下文中的mod_重写规则。除非明确使用Inherit
rewrite选项,否则将忽略父目录中的任何规则
:
这将强制当前配置继承父配置。在每个虚拟服务器上下文中,这意味着将继承主服务器的映射、条件和规则。在每个目录上下文中,这意味着继承父目录的.htaccess配置的条件和规则
从父作用域继承的规则在子作用域中指定的规则之后应用。
但是,在Apache2.4中,有几种类型的继承。除了能够从父母那里继承外
如果启用此选项,则所有子配置将继承当前配置的配置。这相当于在所有子配置中指定RewriteOptions Inherit
。有关如何处理父子关系的详细信息,请参见“继承”选项。
在Apache HTTP服务器2.4.8及更高版本中提供
因此,您可能一直在使用Apache2.4.8,并在服务器或vhost配置中启用了
InheritDown
选项。这不是apache默认提供的方式。谢谢Jon。我并不是有意暗示我过去一直在使用Apache2.4.8,并亲眼目睹了这种行为。在过去,我可能一直在使用一个旧版本,或者一个已经由我的客户或他们的托管公司配置了正确继承类型的版本(我做SEO咨询)。多年来,我已经使用了几个版本的XAMPP来开发网页,但这是我第一次在本地设备上使用它来编写和测试重定向。我通常会在已经配置好的客户端测试服务器上执行此操作。在2.4.8之前,您描述的自动继承类型不是apache mod_重写的一部分
LogLevel warn rewrite:trace8