最小修复试验的做法是:先选一小批已确认返回404或410的死链接,只改一个变量,例如只修内部链接指向、只加一条重定向或只恢复页面,然后重新抓取同一批URL,对比修复前后的状态码与来源页面,确认改动确实生效且没有引入新的死链接。试验范围要小到能在一轮内完成,又要大到能区分“改动有效”和“偶然波动”。下面用一个假设例子说明怎么安排。
假设某内容站有约800个页面,爬取后发现12条内部链接指向不存在的URL,其中7条出现在文章正文,5条出现在侧边栏模板。这12条是本次试验的全部对象,不扩大到其他警告类型。
死链接的成因不同,修复手段也不同。常见成因包括:页面被删除且无替代内容、URL被改写但旧地址仍被引用、链接拼写错误、外部站点失效。针对不同成因,可选手段有改链接指向、加301重定向、恢复或重建页面、直接移除链接。
如果一轮里既改链接又加重定向,即使状态码恢复正常,也无法判断是哪一步起了作用。最小试验要求同一轮内只动一个变量。建议按下面的顺序逐个验证:
需要区分“可能原因”和“已经定位的原因”。抓取工具报404,可能原因包括页面确实不存在、服务器临时故障、抓取时被限流,也可能是大小写或末尾斜杠不一致导致。只有逐条核对响应头和实际内容后,才能把某一条判定为已定位的死链接。
每轮试验结束后,按以下检查项逐条核对,而不是只看总数有没有下降:
判断结果的标准要事先定好。例如假设约定“本轮12条中至少10条恢复200,且无新增404”才算通过。达到就扩大范围,未达到就先分析失败的那几条属于哪类成因,再决定是否换手段,而不是直接全站铺开。
第一类错误是范围失控。发现死链接后直接全站批量替换或批量重定向,一旦规则写错,影响面远大于原来的十几条链接,回滚也困难。第二类错误是只改数据库或模板却不重新抓取验证,以为保存即生效。第三类错误是把robots.txt的抓取限制当成修复手段:限制抓取只是让爬虫不再访问,并不等于把已存在的死链接从索引中移除,也不解决用户点击后打不开的问题。第四类错误是忽略站点地图和重定向的边界:站点地图里列出某个URL,不代表它一定能被收录;加了301,也不代表所有搜索引擎都会按同样方式处理,需要分别核查。
还有一类容易被忽略:修复后不记录。没有修复前后的对照表,下次再出现同类问题时无法判断哪种手段有效。试验的价值一半在结果,一半在留下可复用的判断依据。
先整理出当前已确认的死链接清单,按来源页类型分组,挑出数量最少的一组作为第一轮试验对象,只改一个变量并重新抓取验证。把每轮的改动内容、检查项结果和结论记在同一张表里,再决定是否扩大范围。