我有一个apache服务器,每30分钟一次命中100次,请求的URL与此模式匹配:
/neighborhood/****/feed
这些URL曾经在其上具有内容并曾经有效。现在它们都是404,因此该机器人每次击中我们时都会降低性能。
我要添加到htaccess文件中以对其进行阻止吗?
注意:该漫游器位于EC2上,因此无法使用IP地址进行阻止。我需要阻止与该模式匹配的请求。
使用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上进行了测试。
将缓存系统或CDN放在Apache的前面,并allow your 404 responses to be cached.
以下代码可用于mod_rewrite中的404:
mod_rewrite?但是我怀疑它是否可以在Apache级别上更快。我将nginx作为前端,它在404和规则性能上都更加有效:-)
以上答案阻止了所有用户,包括普通用户。我认为应该包括其他条件以仅限制漫游器: