我在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错误答案 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”执行相同的检查,并仅在匹配时记录该条目。或者,仅在请求未映射到目录时记录条目。