死链查询时看到 404,不一定代表链接真的坏了。缓存、CDN、浏览器本地副本或抓取工具自身的旧快照,都可能让已经恢复的页面继续显示为错误,或让仍存在的页面被误报为死链。判断的关键不是“看到 404 就修”,而是先确认这个 404 来自哪一层:源站、缓存节点,还是查询工具手里的旧记录。下面按观察、判断、处理、复查四步展开。
同一个 404 现象可能来自不同位置,不能只归因于一种原因:
这三类的排查方法不同。先定位来源,再决定是否清理,否则容易把正常页面误删或反复提交无效修复。
最直接的验证方式是绕开缓存,向源站发一次全新的请求。在命令行执行:
curl -I "https://example.com/page?cachebust=20240101"
这里 cachebust 是假设的随机参数,作用是让缓存认为这是一个新地址。观察返回的状态码:
200:页面实际存在,之前的 404 大概率是缓存或快照造成的假象。404:源站确实没有该资源,属于真实死链,需要修复或做 301 跳转。301 或 302:链接被重定向,需确认目标页是否有效,避免跳转链最终落到 404。如果带参数返回 200、不带参数返回 404,基本可以判断缓存层有问题,进入下一步处理。
确认是缓存问题后,按层级清理:
Cache-Control 与 Age 字段。若 Age 数值很大,说明该响应已在缓存中停留较久。需要提醒的是,robots.txt 的抓取限制不等于可靠的索引移除。即使你在 robots.txt 中屏蔽了某个路径,搜索引擎仍可能保留旧索引,也可能因无法抓取而无法及时更新状态。死链处理应针对响应状态本身,而不是靠 robots.txt 掩盖。
处理完成后,隔一段时间再复查,并注意以下检查项:
如果多次复查后状态码稳定为 200,说明缓存假象已排除;若仍间歇性出现 404,可能是源站配置或负载均衡节点不一致,需要进一步检查服务器日志。
先挑一个被报告为死链的 URL,用带随机参数的 curl 请求源站,记录返回状态码。若返回 200,就按缓存层级逐项清理并复查;若返回 404,就把它列入真实死链清单,安排修复或 301 跳转。这样能把“缓存假象”和“真实死链”分开处理,避免无效修改。