希望空文件夹到 return 404 而不是 403

Want empty folder to return 404 instead of 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 错误?

既然您似乎可以访问 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" 执行相同的检查,并且仅在匹配时记录该条目。或者,仅在请求未映射到目录时记录条目。