我的.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) apache .htaccess mod-rewrite http-status-code-403 http-status-code-404