【发布时间】:2016-02-01 16:46:29
【问题描述】:
我正在工作的这台服务器中有一个非常复杂的目录结构,并且在多级上有很多 htaccess。我知道 apache 会合并来自所有 htaccess 的配置,但这并不像听起来那么容易......
例如,如果靠近根目录的 htaccess 文件使用“Filesmatch”来设置配置,那么如果我尝试在更深目录上的另一个 htaccess 文件中更改相同的配置而不使用“Filesmatch”,则配置不会改变了。我意识到只有使用 Filesmatch ".*" 才能更改它们。
我想我知道为什么:apache 先处理一些东西,然后再处理一些东西,尽管它们被放置在 htaccess 文件中。
所以我想知道这一点:是否有可靠的文档,我可以清楚地看到 apache 先处理什么,然后处理什么?我的意思是,即使在同一个 htaccess 文件中,某些规则“看起来”也不会按照它们在文件中出现的确切顺序起作用,因为某些东西可能以不同的顺序执行。
【问题讨论】:
-
Apache 从上到下检查重写规则。
-
是的,但是如果您将重写规则与 filesmatch 混合使用,您会发现在某些情况下您会遇到问题,即使您将 rewriterules 放在文件顶部,而 filesmatch 规则放在底部,文件匹配也会首先匹配!
-
我不知道你为什么要混合使用 filesmatch 和 rewriterule。
-
...一切都有一个案例用法,如果没有,Apache 可以永久删除文件 filesmatch ...并且仅依赖于 mod_rewirte。
-
FilesMatch根本不打算与mod_rewrite一起使用。它旨在与其他指令一起使用,例如AddDefaultCharset、Require valid-user和DefaultLanguage,等等。如果你发现你在重写规则中使用了FilesMatch,那么你可能没有正确地重写。如果您遇到问题,请在新问题中发布您的规则内容,并准确解释问题所在。