改动前保存原始状态,核心是留下三样可核对的东西:一份完整的死链URL清单、每个URL当时的HTTP状态码与跳转链,以及服务器或CMS上与该URL相关的原始配置副本。没有这三样,后续无论做301、410还是删除,都无法判断改动是否达到了预期,也无法在出错时回退。下面用一个假设例子说明具体做法。
假设某站点在改版后,/old/ 目录下约两百个产品页全部返回404,但其中一部分其实已有新地址,另一部分是彻底下线的旧型号。时间和人手有限,只能先处理这一批。改动前应当先建立快照,而不是直接批量重定向。
第一步,导出死链清单。用爬虫工具或服务器日志,把返回404、410的URL逐条导出为CSV,字段至少包括:原始URL、状态码、发现时间、来源页面(即内链或外链从哪来)。这份文件就是原始状态的第一层证据。
第二步,记录每个URL的跳转链。对每个死链请求一次,记录是否经过302、301再到最终页面,以及最终返回码。跳转链会随配置变化,改动前的链条是判断“原来是否已经处理过”的依据。
第三步,备份原始配置。如果重定向写在Nginx、Apache配置或CMS插件里,先把相关配置文件或规则表完整复制一份,命名带日期,例如 redirect-rules-before-20240101.conf。如果规则在数据库表中,导出该表。不要只截图,截图无法回滚。
最常见的错误是只记下“这些是404”,却没有记录每个URL的来源和已有跳转。结果是改动后无法区分两种情况:某URL本来就没有任何入口,重定向它意义不大;某URL有大量外链,必须优先处理。缺少来源信息,优先级就排不出来。
第二个错误是在同一时间既改配置又清缓存,导致前后状态无法对比。正确做法是先完成快照,确认文件已保存并可打开,再动配置。改动后立即用同一份URL清单复测,逐条对比状态码变化。
第三个错误是只备份了重定向规则,却忘了备份原始页面的标题、正文或规范化标签。对于要恢复内容的页面,这些信息决定了能否重建,而不只是能否跳转。
可以用一个简单检查项验证:随机抽十条URL,把改动前的状态码、跳转目标、来源页面三项写在纸上,再与快照文件核对。三项都能对上,说明快照可用;任何一项缺失,就补录后再继续。
适用条件上,这套方法适合URL数量在可手工或半自动核对范围内的批次。如果死链达到数万条,仍应先保存全量清单和配置副本,但逐条跳转链记录可以改为抽样加程序化抓取,前提是抽样规则明确写出。
需要区分的是:保存原始状态不等于保证后续一定成功。301、410、robots.txt 限制、站点地图提交各自作用不同,robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录。快照的价值在于让每一步改动都有对照,而不是替代这些手段本身。
如果只能做一件事,就做第一步:把改动前的URL和状态码完整存下来。它是后面所有判断和回退的起点。下一步是拿这份快照与改动后的复测结果逐条对比,确认每条死链是被正确重定向、正确返回410,还是仍然遗漏。