先接受一个前提:入口正常只证明该URL这条路径可用,不能证明深层链路健康。定位断点时,不要从全站重爬开始,而是把深层链路拆成“可发现—可抓取—可渲染—可索引”四段,用同一批深层URL逐段对照,先找出第一段出现分化的位置,再决定是保留、改写还是退出这条链路。
一类是链路本身断了:内链指向的URL返回404、410,或跳转链过长、跳转目标与预期不符。另一类是链路可达但内容不可用:页面能打开,返回200,但正文由脚本注入、需要交互才出现,抓取端拿到的只是空壳。两者的证据不同,前者看状态码和跳转链,后者看渲染前后的HTML差异。
判断方法很直接:取同一批深层URL,分别记录原始响应中的状态码、最终URL、原始HTML里的正文长度,再与渲染后的正文长度比较。若原始HTML正文长度接近零而渲染后正常,问题在渲染依赖;若状态码异常或最终URL偏离,问题在链路结构。这个区分决定了后面是改模板还是改链接。
入口正常而深层失效,最常见的断点不在深层页本身,而在入口到深层之间的某一跳。做法是从入口页出发,沿内链逐跳记录每一跳的URL、状态码和最终落点,直到目标深层页。第一处状态码异常、最终URL偏离或链接缺失的位置,就是断点候选。
为控制成本,不必全量执行。按模板、目录层级或链接位置抽样,每类取少量代表性URL即可。若同一模板下的深层URL成批出现相同异常,断点更可能在模板或链接生成规则,而不是单个页面。此时应固定抽样口径,再扩大样本验证,而不是直接改内容。
找到断点后,取舍取决于深层页是否仍有独立价值,以及修复成本是否可预期。
三种选择不是并列全选,而是按断点性质择一。若断点在链接结构且深层页有价值,保留并修复;若断点在内容供给且与入口重叠,改写或退出更合理。
假设某深层列表页由前端脚本请求数据后渲染,入口页为静态HTML。抓取端取到的原始HTML中,列表区域为空,但页面状态码为200。此时若只检查状态码,会误判为正常。
按上面的分段法:可发现段正常,可抓取段正常,可渲染段分化。下一步不是改标题或加内链,而是确认该内容是否必须依赖脚本。若必须,需提供可被抓取端获取的替代内容或调整渲染方式;若不必,可改为服务端输出。动作的结果会直接决定后续验证口径:前者验证渲染后内容是否稳定出现,后者验证原始HTML是否已包含正文。
若决定退出某类深层URL,常见误区是用robots.txt限制抓取,认为这样就能让它们从索引中消失。robots.txt限制的是抓取,不等于可靠的索引移除;已收录的URL仍可能因外部链接或历史信号出现在结果中。更稳妥的顺序是先确认这些URL是否仍有入口和内链,再处理内容与状态码,最后观察索引变化。
同时注意,站点地图不保证收录,提交或保留站点地图只说明你声明了这些URL,不代表它们会被抓取或索引。判断退出是否生效,应看目标URL在结果中的实际状态,而不是看站点地图是否提交成功。
修复后若只观察抓取量或请求量,容易把波动当成结论。抓取量下降可能来自抓取预算重新分配、站点整体改动或外部因素,不能单独证明深层链路已修好。更可靠的验证是回到最初的分段记录:同一批深层URL在修复后,第一处分化点是否消失,原始HTML或渲染后内容是否稳定出现。
若分化点消失但索引状态未变,说明断点已修复但索引更新需要时间,此时不应立即再次改动。若分化点仍在,说明修复未触及真正断点,应回到逐跳记录重新定位,而不是扩大改动范围。HTTPS同样不保证安全无漏洞或排名,把它当作链路健康的充分条件会掩盖真实断点。