先看两类结果是否指向同一层:如果修复后“应被收录的页面仍不出现”,但抓取日志、站点地图提交状态或URL检查工具的响应发生了变化,说明你改动的不是同一条依赖链,而是把异常从“发现层”推到了“选择层”。这时不要继续叠加修复,而应把依赖拆成“可抓取—可解析—可索引”三段,逐段用独立信号确认,再决定下一步动作。
修复引发新异常,通常有两种情况。第一种是异常换层:原来的问题是抓取被挡,你放开了限制,但页面进入索引候选后暴露出内容重复、规范标签冲突或渲染失败,于是收录查询结果从“抓取异常”变成“已抓取未索引”。第二种是异常换对象:你为了解决A目录的收录问题,改了全站级规则,结果B目录原本正常的页面也开始消失。两者的处理顺序完全不同。
区分依据可以看三个信号:一是改动前后抓取量是否同步变化;二是异常是否集中在同一模板或同一路径;三是站点地图中“已提交”与“已收录”的差距是否在改动后才扩大。若抓取量上升而索引量不升,优先怀疑选择层;若抓取量下降且异常跨模板扩散,优先怀疑你改动了共享依赖,例如robots.txt、全站规范标签或服务端渲染开关。
这时依赖链大概率是局部的。动作是先把目标URL从站点地图中单独取出,用URL检查工具请求抓取,记录返回的HTTP状态、规范标签和渲染后正文。若返回正常但索引仍不出现,不要立刻再改robots.txt或提交站点地图,因为站点地图不保证收录,重复提交只会增加噪声。下一步应检查该页面是否被自身规范标签指向了另一个URL,或是否被noindex响应头覆盖。若发现规范冲突,先移除冲突来源,再观察一次抓取结果;只有抓取结果与索引结果同时改善,才说明修复命中了同一条链。
这时要假设你改动了共享依赖。动作是回滚最近一次全站级改动,只保留与目标问题直接相关的最小变更,然后分别对三个样本URL做收录查询:一个原本正常、一个原本异常、一个本次新出现异常。若原本正常的样本恢复而目标样本仍异常,说明原修复并未解决根因,只是被共享依赖的副作用掩盖。此时应把共享依赖拆成独立开关,例如把robots.txt的禁止规则从全站改为仅针对参数路径,再逐条验证。例外是:如果回滚会导致已修复的抓取问题重新出现,就不要一次性全回滚,而是先冻结共享依赖,改为按目录分别下发规则。
很多人把“可抓取”直接等同于“可索引”,于是只在robots.txt和站点地图之间来回调整。实际依赖链至少还有两层:可解析与可选择。可解析指HTML能被正常获取并渲染出正文;可选择指搜索引擎在多个相似URL中愿意选你希望的那一个。一个修复如果只解决了抓取,却让页面正文在渲染后为空,异常就会从抓取层转移到解析层,收录查询结果看起来仍是“不收录”,但原因已经不同。
验证方法是:对同一URL分别查看原始HTML和渲染后HTML。若原始HTML有正文而渲染后为空,问题在渲染依赖;若两者都有正文但规范标签指向别处,问题在选择依赖。此时继续改抓取规则不会有效,反而可能因为反复请求让日志更难读。另一个中间层是HTTPS:启用HTTPS不保证安全无漏洞,也不保证排名,但它可能改变站内链接和规范标签的绝对地址。若修复中批量替换了协议,先检查站内链接是否仍指向旧协议,否则会制造新的规范冲突。
假设某站有/products和/blog两个目录,原本只有/products收录异常。你判断是抓取预算问题,于是在robots.txt中禁止了带参数的URL,并重新提交站点地图。一周后,/products恢复正常,但/blog开始大量不收录。
按依赖链拆解:先查抓取日志,若/blog的抓取量在改动后下降,说明禁止规则误伤了/blog的分页参数;若抓取量不变而索引量下降,说明问题不在抓取层,而在你同时改动的规范标签把/blog页面指向了/products。此时动作是:把robots.txt规则收窄到仅匹配/products下的参数,并恢复/blog的规范标签;然后只对/blog的一个样本URL做收录查询,确认抓取与索引是否同步恢复。若恢复,再逐步放量;若不恢复,说明/blog还有独立依赖,例如分页页面的canonical指向了第一页,需要单独处理。这个例子的数字和路径均为假设,只用于说明比较方法。
如果连续两次修复都只是把异常从一个目录推到另一个目录,且每次都需要回滚才能定位,说明当前依赖链的观测粒度不够。此时应停止叠加规则,改为先建立最小观测集:每个模板选一个代表URL,固定记录HTTP状态、规范标签、渲染后正文长度和收录查询结果。只有这四个信号在同一时间点可比,才能判断某次改动到底影响了哪一层。否则,请求量或抓取量归零并不能单独证明处理正确,它也可能是规则误伤、服务端限流或日志采样变化造成的。
最终决策依据是:当异常换层时,修选择层而不是继续修发现层;当异常换对象时,先收窄共享依赖再验证局部修复。只有目标URL的抓取信号与索引信号同时改善,才把这次修复视为有效,并进入下一轮小范围验证。