处理搜索引擎爬虫遇到的重复或冲突信号,优先顺序不是“把所有信号都改一遍”,而是先找出同一批URL上互相矛盾的指令,再按“谁能覆盖谁”排序。常见误解是:只要robots.txt允许抓取、站点地图提交了、页面又能打开,爬虫就会顺利收录。实际上,抓取许可、索引资格、规范化选择是三层不同的事,一层放行不等于下一层通过。
重复信号指多个入口表达同一层意思,例如站点地图、内链、规范标签都指向同一个URL,这通常无害,甚至有助于发现页面。冲突信号指两个入口给出相反结论,例如robots.txt禁止抓取某目录,但站点地图又把它列为重要页面;或者页面用<link rel="canonical">指向A,同时内链和重定向都指向B。爬虫面对冲突时不会替你猜意图,往往选择保守处理,结果就是该收录的没收录,该合并的没合并。
判断方法很直接:把同一批URL的抓取许可、HTTP状态、规范指向、站点地图收录情况列成一张表,同一行出现两个相反结论的,就是冲突点。重复项可以暂时不动,冲突项必须处理。
时间和人手有限时,先处理“上层指令否定下层目标”的冲突,收益最大。可以按下面的顺序检查:
这个顺序的依据是:抓取层被阻断时,页面层的规范、元标签都读不到;索引层终点不唯一时,后续优化没有稳定对象。先解决这两类,再处理参数和分页的重复。
假设某站点有商品列表页和带筛选参数的版本,同时存在以下情况:robots.txt禁止抓取带?sort=的URL;站点地图提交了这些带参数URL;列表页规范标签指向不带参数的版本。这里的冲突是:站点地图在推荐抓取,robots.txt在阻止抓取。处理方式是二选一——如果希望这些参数页被合并,就不应把它们放进站点地图,让爬虫只通过内链发现并读取规范标签;如果确实需要它们被收录,就必须先放开抓取,再谈规范。
判断结果的标准不是“提交后多久收录”,而是:抓取许可与站点地图是否一致、最终URL是否唯一返回200、规范标签指向的URL是否可被抓取。站点地图不保证收录,它只是发现线索;robots.txt的限制也不等于可靠的索引移除,它只控制抓取,不控制已收录URL的展示。
robots.txt、规范标签、站点地图的解析细节在不同搜索引擎之间可能存在差异,付费广告与自然搜索结果也是两套系统。不要因为一个搜索引擎的处理结果,就推断另一个一定相同。可行做法是分别查看各搜索引擎自己的抓取与索引报告,确认同一URL在各处的状态是否一致。如果只有某一个搜索引擎出现异常,优先查它对该指令的支持情况,而不是全站改版。
下一步:从上面那张URL对照表里,挑出第一条“抓取许可与站点地图互相否定”的记录,先统一这一条,再复查最终URL的状态码和规范指向。