我有一个apache服务器,每30分钟就会遇到大约100次点击请求匹配此模式的URL:
/neighborhood/****/feed
这些网址过去常常包含内容并且过去有效。现在他们都是404,所以这个机器人每次碰到我们都会杀死它。
我要将哪些内容添加到我的htaccess文件中以阻止它?
注意:僵尸程序在EC2上,因此IP地址阻止将无效。我需要阻止匹配该模式的请求。
答案 0 :(得分:13)
使用mod_rewrite规则可以让您到达目的地:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/neighborhood/[^/]+/feed$ [NC]
RewriteRule ^.*$ - [F,L]
上面会进入你的.htaccess文件,或者如果你想把它放在你的vhost文件中(因为你已经关闭了.htaccess解析性能 - 这是一个好主意):
<Location />
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/neighborhood/[^/]+/feed$ [NC]
RewriteRule ^.*$ - [F,L]
</Location>
给定/ neighborhood / carson / feed的URI,你应该得到一个响应,例如:
禁止
您无权访问 /邻居/ carson / feed在这台服务器上。
Apache / 2.2.16(Ubuntu)服务器 ...... 80号港口
这是在我在Ubuntu 10.10上运行Apache / 2.2.16的本地VM上测试的。
答案 1 :(得分:1)
将缓存系统或CDN放在Apache前面,allow your 404 responses to be cached.
403可以通过mod_rewrite轻松设置:
RewriteRule ^neighborhood/[^/]+/feed$ - [F]
答案 2 :(得分:1)
以下代码可用于mod_rewrite中的404:
RewriteRule pattern - [R=404] [other_flags]
答案 3 :(得分:0)
mod_rewrite的?但我怀疑它可以在apache级别上更快。 我会看看nginx作为前端,它在404和规则性能方面更有效: - )
PS。此外,您可能会尝试将重定向返回到某处的100Mb文件,以便为这些机器人带来一些乐趣:-D
答案 4 :(得分:0)
以上答案阻止了所有用户,包括普通用户。我认为应该包括另一个条件以限制机器人:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^.*(spider|HTTrack|Yandex|muckrack|bot).*$ [NC]
RewriteCond %{REQUEST_URI} ^/neighborhood/[^/]+/feed$ [NC]
RewriteRule ^.*$ - [F,L]