如何在htaccess中配置规则拦截所有爬虫仅放行指定Semrush系列爬虫
你给出的调整方案完全正确,可以实现「拦截所有带bot、crawl、spider标识的爬虫,仅放行你指定的三款Semrush相关爬虫」的需求。
规则逻辑说明
原来的拦截规则是命中爬虫UA特征就直接返回503,你新增的规则是做白名单校验:
RewriteCond %{HTTP_USER_AGENT} !(SemrushBot-BA|SiteAuditBot|SemrushBot-SI) [NC]这条规则是反向匹配,只有当UA不属于你列出的三个白名单爬虫时,才会继续执行后续的拦截逻辑- 末尾的
[NC]标识代表忽略大小写匹配,哪怕爬虫UA出现大小写拼写差异也不会误拦截,配置非常合理 - 保留的robots.txt排除规则也没有问题,不会影响合法爬虫读取站点的爬取规则
后续如果需要新增其他白名单爬虫,直接在括号内用竖线|分隔补充对应UA字符串即可,无需修改其他配置。
调整后的最终可直接使用的配置如下:
ErrorDocument 503 "Sitio inhabilitado temporalmente para el rastreo" RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^.*(bot|crawl|spider).*$ [NC] RewriteCond %{HTTP_USER_AGENT} !(SemrushBot-BA|SiteAuditBot|SemrushBot-SI) [NC] RewriteCond %{REQUEST_URI} !^/robots\.txt$ RewriteRule .* - [R=503,L]
内容的提问来源于stack exchange,提问作者Jonathan
相关产品推荐
相关产品推荐

