我的 .htaccess 的相关部分如下所示:
Options -Indexes
<FilesMatch include>
Order allow,deny
Deny from all
</FilesMatch>
RedirectMatch 404 ^/include(/.*)$
它正在生成以下响应:
- /包括403
- /包括/ 404
- /include/config.inc 403
我可以通过查看我的模式来判断问题可能出在 (/.*) 部分,但我尝试过的一切都给了我相同的结果;而不是一直得到 404,我得到了一个案例的 404 和其他所有案例的 403。我使用的表达有什么问题?或者,由于我必须为几个目录执行此操作,是否有一种全面的方法可以让我将所有 403 响应转换为 404?
更新:我发现通过删除 FileMatch 可以获得更好的结果,所以我的 .htaccess 现在看起来像这样:
Options -Indexes
RedirectMatch 404 ^/include(/.*)?$ # Added dlamblin's first suggestion
并生成以下响应:
- /包括404
- /包括/ 404
- /include/config.inc 403
更新:有趣的是,我发现以下产生不同的输出:
RedirectMatch 404 ^/include(/?|/.*)$
RedirectMatch 404 ^/template(/?|/.*)$
模板模式适用于所有情况,但是 include 仍然为 include 中的所有文件生成 403(例如 /include/config.inc)这可能是目录名称的问题,而不是 .htaccess 文件本身的问题吗?
更新:访问 /include/config.inc 时,我的 .htaccess 中的以下内容与重定向冲突。
<FilesMatch config>
Order allow,deny
Deny from all
</FilesMatch>