我的.htaccess的相关部分看起来像这样:
Options -IndexesOrder allow,deny Deny from all RedirectMatch 404 ^/include(/.*)$
它产生了以下响应:
/包括403
/ include/404
/include/config.inc 403
我可以通过查看我的模式来判断问题可能出现在(/.*)部分,但我尝试的所有内容都给出了相同的结果; 而不是一直得到404我得到一个404的404和其他一切的403.我正在使用的表达式有什么问题?或者,因为我必须为几个目录执行此操作,是否有一种全面的方法可以将所有403响应转换为404?
更新:我发现通过删除FileMatch我得到了更好的结果,所以我的.htaccess现在看起来像这样:
Options -Indexes RedirectMatch 404 ^/include(/.*)?$ # Added dlamblin's first suggestion
并生成以下响应:
/包括404
/ include/404
/include/config.inc 403
更新:有趣的是,我发现以下产生不同的输出:
RedirectMatch 404 ^/include(/?|/.*)$ RedirectMatch 404 ^/template(/?|/.*)$
模板模式适用于所有情况但是include仍然为include中的所有文件生成403(例如/include/config.inc)这可能是目录名称的问题而不是.htaccess文件本身的问题?
更新:访问/include/config.inc时,我的.htaccess中的以下内容与重定向冲突.
Order allow,deny Deny from all
Bryan Rehbei.. 6
我可以理解为什么你的RedirectMatch没有抓住/ include,你没有把结尾'/'作为可选,但是/include/config.inc部分有点令人费解.
以下是我在Apache 2.2上的工作:
Order allow,deny Deny from all RedirectMatch 404 ^/include(/?|/.*)$
这处理这些情况:
/include 404 /include/ 404 /include/config.inc 404
我必须更改FilesMatch部分才能使/ include部分正常工作.
编辑:
匹配行也可以在.htaccess中没有
我可以理解为什么你的RedirectMatch没有抓住/ include,你没有把结尾'/'作为可选,但是/include/config.inc部分有点令人费解.
以下是我在Apache 2.2上的工作:
Order allow,deny Deny from all RedirectMatch 404 ^/include(/?|/.*)$
这处理这些情况:
/include 404 /include/ 404 /include/config.inc 404
我必须更改FilesMatch部分才能使/ include部分正常工作.
编辑:
匹配行也可以在.htaccess中没有