2017-08-31 105 views
1

我用下面的代码在我的httpd.conf文件阻止不需要的机器人和参观者(如打非现有的WP-登录页面):想空文件夹返回的404,而不是403

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

既然你似乎有机会获得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”,如果有匹配仅记录条目。或者,只有在请求未映射到目录时才记录条目。