入口返回 200 不代表深层链路健康。当死链工具报告首页或栏目页正常、深层文章或详情页却失效时,断点通常落在三类位置:链接生成逻辑、跳转链路、以及抓取渲染后的真实响应。定位方法取决于样本是否可复现:少量样本可手工逐跳核对,规模化后必须靠分组对比和日志证据,不能把单页结论直接推广到全站。
两种原因的排查方向完全不同,选错会浪费大量时间。链接生成问题表现为:页面源码里根本没有目标链接,或链接指向了错误参数;链路跳转问题表现为:链接存在,但请求经过重定向、参数拼接或前端路由后落到 404 或 410。
区分依据是查看原始 HTML 与最终 URL 的差异。用死链工具导出报告时,同时保留「发现链接的页面」和「目标 URL」两列。若目标 URL 在源码中就不存在,属于生成侧;若源码中存在但工具最终判定失效,属于链路侧。这个判断决定了下一步是找模板或 CMS 配置,还是查服务器重定向规则。
当失效只出现在个别深层页时,手工核对比批量扫描更可靠。动作是:取一个失效样本,用命令行依次请求每一跳,记录状态码和 Location 头。
例如假设某详情页 /article/123 失效,而列表页 /list 正常。执行 curl -I https://example.com/article/123,若返回 301 指向 /article/123/,再请求后者若返回 404,则断点就在这次重定向的目标地址上。此时下一步不是改死链工具配置,而是检查该 URL 的规范化规则或路由映射。
这个动作的结果会直接影响后续:如果每一跳都返回 200,但工具仍报失效,问题可能出在抓取渲染阶段,需要换用能执行 JavaScript 的抓取方式复核,而不是继续查服务器。
样本量上来后,逐跳核对不再可行,此时应把深层 URL 按可区分维度分组:按目录层级、按模板类型、按发布时间、按是否带参数。分组后对比各组的失效比例,找出异常集中的那一组。
可用的证据包括:同模板下多数页面正常、少数失效,说明是数据问题而非模板问题;同一目录下全部失效,说明是规则或路由问题;带参数的 URL 失效而静态 URL 正常,说明断点与参数处理有关。这种分组不依赖单页结论,能避免把个别样本的偶然现象当成全局规律。
需要提醒的是,抓取量或请求量下降不能单独证明深层链路已修复,也可能是抓取预算调整、日志采样变化或工具本身限流所致,必须结合状态码分布一起看。
第一类边界是站点使用前端路由:源码中的链接可能由 JavaScript 生成,原始 HTML 里看不到目标地址,此时按「源码无链接」判定为生成侧会误判,需要先确认渲染后的 DOM。
第二类边界是 robots.txt:它限制的是抓取,不等于可靠的索引移除。深层页被 robots 屏蔽后,死链工具可能报「无法访问」而非「404」,这属于抓取限制,不能直接当作链路失效处理。站点地图也不保证收录,把深层页加进 sitemap 并不能修复断点。
此外,HTTPS 不保证安全无漏洞或排名,遇到深层页失效时不要把它当成安全或权重问题来排查。不同搜索引擎对重定向和状态码的支持情况须分别核查,不能用一个引擎的表现推断全部。
定位到断点后,动作应指向具体环节而非笼统「修死链」。生成侧问题改模板或 CMS 输出规则;链路侧问题改重定向或路由配置;渲染侧问题调整抓取方式或前端加载逻辑。每次修改后,重新跑一次分组对比,确认异常组的失效比例是否下降,而不是只看首页是否恢复 200。只有异常组数据变化,才说明断点被真正处理。