面对成百上千条网址的收录异常,不要逐条排查,而应先按“模板、目录、参数、时间”四个维度分层抽样,再对抽中的样本做单页诊断。核心判断是:如果同一模板或同一目录下的样本表现出相同症状,问题大概率出在批量层面;如果样本症状各不相同,才需要回到单页层面处理。抽样定位的目标不是找出所有坏页,而是用最小样本量判断问题属于哪一类,从而决定是批量修复还是逐页修复。
随机抽网址容易得到无代表性的结果。更可靠的做法是先给网址分组,再从每组里抽。常见的分组依据有四种:
每组至少抽 3 到 5 条,组内样本要覆盖不同层级和不同参数组合。如果某一组抽出来的样本全部异常,而其他组正常,就可以把排查范围收窄到这一组的生成逻辑上。
抽样之后通常面对两种路线,选择依据是症状的一致性。
方案一:批量修复。适用条件是同一组样本出现完全相同的症状,例如同一模板生成的页面全部返回相同的状态码,或全部缺少可索引的正文内容。此时应修改模板、生成规则或服务器配置,而不是逐页改。验收信号是:修复后重新抽样同一组,异常比例明显下降,且其他组没有因此出现新异常。
方案二:逐页处理。适用条件是同组样本症状不一致,例如有的返回正常但未被收录,有的返回错误状态码,有的内容重复。这时批量修改可能误伤正常页面,应先把异常页按症状再细分,对每一小类单独处理。验收信号是:每一小类的异常样本数量下降,而不是整体比例被平均数掩盖。
判断顺序建议是:先看状态码和可抓取性,再看内容是否可索引,最后看是否有重复或 canonical 冲突。前一层没通过时,后一层的抽样结果没有参考价值。
对抽中的每一条样本,按下面顺序记录结果,不要跳步:
curl -I 或浏览器开发者工具查看 HTTP 状态码,确认是 200、301、404 还是 5xx;robots.txt 是否对该路径或该目录设置了抓取限制。注意抓取限制不等于索引移除,被限制抓取的页面仍可能出现在索引里;<head> 中是否有 noindex,以及 canonical 指向的是自身还是其他 URL;把每条样本的六项结果列成一行,横向对比。如果某一项在整组样本里表现一致,它就是优先怀疑对象。
假设某站点有 800 条商品详情页,其中约 200 条未被收录。按目录抽样后发现,未被收录的样本集中在带 ?color= 参数的 URL 上,而不带参数的同类页面基本正常。此时症状一致,属于批量问题,应检查参数页是否与主商品页内容重复、canonical 是否错误地指向了参数页自身。修复方向是统一 canonical 指向无参数版本,并确认参数页不再被单独提交。反之,如果抽中的异常样本里,有的参数页正常、有的正常页也异常,就不能只改参数规则,需要逐类排查。
批量修复后不要立刻全量重刷,而是回到原来的分组,每组重新抽 3 到 5 条,对比修复前后的状态码、canonical 和内容可索引性。如果异常集中在某一组,而该组修复后仍有残留异常,说明该组内部还存在未识别的子类,需要再分一层。抽样定位的终点是:你能用一句话说明“哪一类 URL 因为什么原因未被收录”,并且这句话能解释抽中样本中的绝大多数,而不是只解释其中一条。
下一步建议先固定你的分组维度和抽样数量,把最近一次抽样的六项结果整理成一张表,再决定走批量修复还是逐页处理。