Apache htaccess递归是如何工作的?

Apache htaccess递归是如何工作的?,apache,.htaccess,apache2,Apache,.htaccess,Apache2,我在一个托管环境中工作,我的主webroot位于~/www。我有几个子域托管在~/www/\u子域中。在主webroot中,我有一个.htaccess文件,它进行了一些小的重写。在我的两个子域中,我有相似的.htaccess文件,这些子域响应正常 在另外两个新创建的子域中,我有.htaccess文件,这些文件为空,保存为AddHandler指令。我发现根.htaccess文件的存在/内容会影响这两个子域。他们犯了500个错误。一旦我重新命名了它,断开的子域就可以工作了 当然,这会破坏其他站点,因

我在一个托管环境中工作,我的主webroot位于
~/www
。我有几个子域托管在
~/www/\u子域
中。在主webroot中,我有一个
.htaccess
文件,它进行了一些小的重写。在我的两个子域中,我有相似的
.htaccess
文件,这些子域响应正常

在另外两个新创建的子域中,我有
.htaccess
文件,这些文件为空,保存为
AddHandler
指令。我发现根
.htaccess
文件的存在/内容会影响这两个子域。他们犯了500个错误。一旦我重新命名了它,断开的子域就可以工作了


当然,这会破坏其他站点,因此我不能将其删除,但它违反了我对
.htaccess
递归工作原理的理解。我认为只要子目录中有
.htaccess
文件,祖先目录中的文件就永远不会被执行

显然,我错了,所以我希望有人能教育我,帮助我解决这个问题


谢谢

.htaccess
文件从当前目录向上应用,在主配置处停止。当前目录的
.htaccess
文件中的任何规则和指令将取代进一步评估
.htaccess
时发现的任何其他规则

但是,正如您所发现的,问题在于没有显式重写的规则是从其他文件应用的。您可以参考以获得进一步的解释,特别是如何应用指令部分


希望能有所帮助。

“我认为只要子目录中有一个.htaccess文件,祖先目录中的文件就永远不会被执行。”。不,它会为每个请求遍历整个目录树。这是htaccess的缺点之一:这种遍历增加了不寻常的开销。这确实有帮助。我想我没有意识到规则层出不穷。当你找到第一个
.htaccess
之类的东西时,我觉得这更像是一次停留。最后,我关闭了相应子域的
重写引擎
,但这有助于我理解原因。谢谢。我个人觉得这非常直观。
。htaccess文件从当前目录向上应用,在主配置处停止。我确信这不是原意,但这句话似乎暗示了一个文件
/foo/bar/.htaccess
将“向上”应用于
/foo/my.php
上的文件请求,我不认为是这样。