robots.txt中Disallow: /*?规则对带?动态链接的爬取效果咨询
结论前置
你当前配置的robots.txt规则会拦截列出的3个动态链接,谷歌爬虫均无法爬取。
核心匹配逻辑说明
针对Googlebot(谷歌爬虫)的规则解析逻辑,两条配置的生效逻辑如下:
Allow: /search/:仅匹配路径以/search/开头的URL,匹配前缀长度为8个字符Disallow: /*?:匹配所有带查询参数(即URL中包含?)的URL,规则中的*可匹配0个及以上任意字符,完全覆盖你提到的「/与?之间无其他字符」的场景,不存在匹配漏判。
谷歌爬虫遵循最长匹配优先原则:同一组规则下如果URL同时命中Allow和Disallow,匹配URL字符长度更长的规则生效;如果两者匹配长度完全一致,Allow规则优先级更高。
逐个链接匹配结果
https://www.whateverwebsite.de/search/?q=hello:同时命中两条规则,Allow: /search/匹配长度为8,Disallow: /*?匹配到?位置的前缀长度为9,Disallow规则优先级更高,谷歌爬虫不会爬取。https://www.whateverwebsite.de/category.html?form_new=18658:仅命中Disallow: /*?规则,路径前缀不满足/search/要求,谷歌爬虫不会爬取。https://www.whateverwebsite.de/search/?q=grand&productFilter=motive_design%3AGeometric:匹配逻辑和第一个链接完全一致,Disallow规则优先级更高,谷歌爬虫不会爬取。
配置修正方案
如果你的需求是允许谷歌爬虫爬取/search/路径下的所有搜索结果动态链接,同时屏蔽其他路径下的所有带参数URL,需要将Allow规则修改为:Allow: /search/?
修改后/search/下带查询参数的链接命中Allow规则的匹配长度和Disallow规则一致,Allow优先级更高,可正常被爬取;其他路径的带参链接仍会被拦截。
注:以上结论仅针对支持通配符匹配的爬虫(如Googlebot、Bingbot)生效,部分老旧爬虫可能不支持
*通配符规则。
内容的提问来源于stack exchange,提问作者Daniel D.
相关产品推荐
相关产品推荐

