如何编写带特定规则的robots.txt以实现URL的精准禁爬与条件放行?
如何编写带特定规则的robots.txt以实现URL的精准禁爬与条件放行?
嗨,我来帮你搞定这个robots.txt的规则配置问题!你想要的效果是禁止所有带?page=*参数的URL被抓取,但只要路径里包含article的这类URL就例外放行,这个需求完全可以通过合理设置Allow和Disallow规则实现,核心是利用robots.txt的「规则匹配优先级」——更具体的规则会被优先执行,所以我们只需要把放行的例外规则放在前面,再写通用的禁止规则就行。
正确的robots.txt配置代码
User-Agent: * # 放行根目录下/article/路径带page参数的URL(比如http://example.com/article/?page=2) Allow: /article/?page=* # 放行任意子目录下/article/路径带page参数的URL(比如http://example.com/xxx/article/?page=2) Allow: */article/?page=* # 禁止其他所有带page参数的URL(比如http://example.com/blog/?page=2) Disallow: /*?page=*
规则说明
Allow: /article/?page=*:专门匹配根目录下直接的/article/路径后带page参数的URL,对应你提到的第一个放行案例。Allow: */article/?page=*:匹配任意层级子目录下的/article/路径带page参数的URL,覆盖你说的第二个放行场景。Disallow: /*?page=*:匹配所有路径(包括根目录和任意子目录)下带page参数的URL,但因为前面的两条Allow规则更具体,所以符合放行条件的URL会被优先放行,剩下的才会被禁止抓取。
匹配验证
- 对于你要禁止的
http://example.com/*/?page=2(比如http://example.com/blog/?page=2):因为路径里没有article,会触发最后的Disallow规则,被Google忽略。 - 对于你要放行的
http://example.com/article/?page=2和http://example.com/*/article/?page=2:会分别匹配前面的两条Allow规则,顺利被允许抓取。
备注:内容来源于stack exchange,提问作者ishiodori
相关产品推荐
相关产品推荐

