如何阻止机器人请求到与Apache中的常见模式匹配的URL?

时间:2011-01-09 18:05:27

标签: regex apache bots

我有一个apache服务器,每30分钟就会遇到大约100次点击请求匹配此模式的URL:

/neighborhood/****/feed

这些网址过去常常包含内容并且过去有效。现在他们都是404,所以这个机器人每次碰到我们都会杀死它。

我要将哪些内容添加到我的htaccess文件中以阻止它?

注意:僵尸程序在EC2上,因此IP地址阻止将无效。我需要阻止匹配该模式的请求。

5 个答案:

答案 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]