如何阻止漫游器对与Apache中的常见模式匹配的URL的请求?

问题描述 投票:12回答:5

我有一个apache服务器,每30分钟一次命中100次,请求的URL与此模式匹配:

/neighborhood/****/feed

这些URL曾经在其上具有内容并曾经有效。现在它们都是404,因此该机器人每次击中我们时都会降低性能。

我要添加到htaccess文件中以对其进行阻止吗?

注意:该漫游器位于EC2上,因此无法使用IP地址进行阻止。我需要阻止与该模式匹配的请求。

regex apache bots
5个回答
14
投票

使用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,您应该期望响应如下:

禁止

您无权访问/ neighborhood / carson / feed在此服务器上。

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

这已在我在Ubuntu 10.10上运行Apache / 2.2.16的本地VM上进行了测试。


2
投票

将缓存系统或CDN放在Apache的前面,并allow your 404 responses to be cached.


2
投票

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


0
投票

mod_rewrite?但是我怀疑它是否可以在Apache级别上更快。我将nginx作为前端,它在404和规则性能上都更加有效:-)


0
投票

以上答案阻止了所有用户,包括普通用户。我认为应该包括其他条件以仅限制漫游器:

© www.soinside.com 2019 - 2024. All rights reserved.