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

bfl*_*ra2 12 regex apache bots

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

/neighborhood/****/feed
Run Code Online (Sandbox Code Playgroud)

这些URL过去常常包含内容并且过去是有效的.现在他们都是404,所以这个机器人每次击中我们都会杀死它.

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

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

Wil*_*III 14

使用mod_rewrite规则可以将您带到您想要的位置:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/neighborhood/[^/]+/feed$ [NC]
RewriteRule ^.*$ - [F,L]
Run Code Online (Sandbox Code Playgroud)

上面介绍了你的.htaccess文件,或者如果你想把它放在你的vhost文件中(因为你已经关闭.htaccess解析性能 - 一个好主意):

<Location />
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/neighborhood/[^/]+/feed$ [NC]
RewriteRule ^.*$ - [F,L]
</Location>
Run Code Online (Sandbox Code Playgroud)

给定/ neighborhood/carson/feed的URI,您应该期望得到如下响应:

被禁止

您无权访问此服务器上的/ neighborhood/carson/feed.

Apache/2.2.16(Ubuntu)服务器位于...端口80

这是在我在Ubuntu 10.10上运行Apache/2.2.16的本地VM上测试的.

  • 顺便说一句,这导致状态代码:403 Forbidden (3认同)

kn_*_*van 5

以下代码可用于 mod_rewrite 中的 404:

RewriteRule pattern -  [R=404] [other_flags]
Run Code Online (Sandbox Code Playgroud)


Bar*_*ter 0

mod_重写?但我怀疑它可以在 apache 级别上变得更快。我会看一下 nginx 作为前端,它在 404 和规则性能方面都更有效:-)

附言。另外,您可以尝试在某个地方返回到 100Mb 文件的重定向,以取笑这些机器人:-D