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