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