先给结论:当死链检查工具在静态响应里报 404、在脚本渲染后又看到正常内容时,不要急着判定哪一边错了。正确做法是先用同一批 URL 分别保存静态响应和渲染后 DOM 的证据,再判断差异来自服务端状态、前端路由还是渲染时机,最后才决定这条链接该修、该留还是该退出索引。
这个判断在旧内容、旧系统或旧合作关系退出时尤其关键:你想保留仍然有价值的部分,就必须知道哪些链接是真的没了,哪些只是渲染方式不同造成的假警报。
静态响应与脚本渲染结果不同,通常落在两种条件之一。
判断依据不是看哪边“更好看”,而是看 HTTP 状态码与最终可见正文是否一致。状态码和正文任何一项对不上,都值得单独记录,而不是合并成一个结论。
可以按下面的顺序做一次对照,假设你手上有一批准备退出但想保留部分内容的旧 URL:
这个动作的结果会直接决定下一步:如果差异集中在少数 URL,就逐个查服务端路由和前端兜底逻辑;如果差异成片出现,更可能是渲染环境本身的问题,比如脚本超时或接口不可达,这时先修渲染条件,而不是急着改链接。
举例来说,假设某条旧链接静态请求返回 404,脚本渲染后却显示了一段旧介绍。你可以先查服务端是否还保留这条路由。如果没有,说明渲染出来的内容来自前端缓存的兜底模板,这条链接不应被当作有效内容保留,而应进入退出流程;如果服务端其实有对应资源,只是路由配置漏了,那要修的是服务端,而不是删链接。这个例子只是说明比较方法,不代表任何真实项目的结论。
请求量、抓取量或某类统计归零,不能单独证明你的判断正确。它们还可能是抓取频率变化、日志采样方式改变或渲染环境被限流造成的。同样,robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录。所以定位差异时,要以状态码、正文和渲染时机这三类证据为主,统计数字只作辅助参考。
如果差异涉及多个渠道,还要分开看:搜索引擎抓取、平台推荐和广告落地页对同一 URL 的处理可能不同。不要用一边的结果去推断另一边。
这套对照方法在两种情况下需要调整。第一,页面依赖登录态或地域判断时,静态响应和渲染结果本来就会不同,这时要先统一请求身份和访问位置,再比较。第二,页面内容由接口异步返回时,渲染结果取决于接口是否成功,不能只看一次请求就下结论,应重复几次观察是否稳定。
明确这些前提后,你才能在保留有价值内容和退出旧链接之间做出可复核的决定:状态码与正文一致的部分按原计划处理,不一致的部分先查清原因再动,避免把仍有价值的页面误删,也避免把已经失效的链接继续留在索引里。