想要空文件夹返回404而不是403

时间:2017-08-31 08:02:44

标签: apache .htaccess httpd.conf http-status-code-403

我在httpd.conf文件中使用以下代码来阻止不需要的机器人和访问者(例如,点击非现有的wp-login页面):

SetEnvIf User-Agent BadBot GoAway=1
Order allow,deny
Allow from all
Deny from env=GoAway

这将给他们403 Forbidden错误。在我的自定义403页面上,我将IP保存到数据库中,以便永久阻止/禁止他们使用联系表单等。

这非常有效。但是我注意到有些用户被阻止,因为他们访问了一个空文件夹。这是不受欢迎的。

使用Options -Indexes我阻止了目录查看,但这也会输出403 Forbidden错误。

问题:如何在访问空文件夹而不是403?

时提供并显示404错误

1 个答案:

答案 0 :(得分:1)

由于您似乎可以访问httpd.conf,因此您可以在服务器配置或虚拟主机上下文中执行以下操作:

RewriteEngine On
RewriteCond %{LA-U:REQUEST_FILENAME} -d
RewriteRule /. - [R=404]

或者,靠近.htaccess文件的顶部(因为您已标记了问题.htaccess),请包含以下内容(这也适用于目录上下文):

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . - [R=404]

模式/.(或.)的目的是阻止404为文档根目录服务。

根据您定义自定义 ErrorDocument的位置,您可能会针对每种方法获得不同的404响应。

或者,在您的自定义403中,对“BadBot”执行相同的检查,并仅在匹配时记录该条目。或者,仅在请求未映射到目录时记录条目。