在修改任何会返回404状态码的规则、页面或配置之前,先保存原始状态,核心是保留三样东西:改动前服务器实际返回的HTTP响应、产生该响应的配置或文件、以及一段时间内的访问日志。只有先固定这三类证据,改动后出现误伤、漏放或流量下滑时,才能判断是改动本身的问题,还是原本就存在的状态。
不要假设浏览器看到的404就是源站返回的404。请求可能经过CDN、反向代理、负载均衡或应用框架,任意一层都可能改写状态码。改动前用命令行工具直接请求,并记录完整响应头,例如:
curl -I https://example.com/old-page
重点看第一行的状态码,以及响应头中是否有缓存、代理或重定向相关字段。如果源站返回200而边缘节点返回404,说明问题不在源站配置,改动源站不会有效果。这一步的目的是确定“原始状态”到底由哪一层决定。时间和人手有限时,优先处理返回404且仍有外部链接或搜索流量的URL,而不是全站所有404。
这三类材料缺一不可。只有响应快照,无法知道404是配置造成的还是内容本身已删除;只有配置,无法确认线上实际返回的状态。
保存原始状态之后,逐个判断处理优先级。判断依据是:该URL是否还有外部链接指向、是否在站点地图或内链中出现、日志中近期是否仍有访问。满足其中一项的,改动前必须记录其原始状态,改动后逐一复查。没有任何引用、日志中长时间无访问的404,可以排在后面处理。
需要区分的是,robots.txt的抓取限制不等于可靠的索引移除:即使禁止抓取,已收录的URL仍可能出现在结果中。站点地图也不保证收录,提交与否和收录是两件事。这些区别会影响你对404处理结果的预期,但不改变“先保存原始状态”这个前提。
backup-20250101。如果改动涉及重定向,要确认目标URL返回的是200而不是另一条404或重定向链。假设某旧页面应重定向到新页面,改动后请求旧URL应看到301或302,再请求新URL应看到200;如果新URL也返回404,这条重定向等于把问题转移了位置,需要继续处理。这里的301、302和200只是举例说明判断方式,具体采用哪种状态要按实际需求决定。
改动完成后的几天内,重新导出日志,对比改动前后同一批URL的状态码分布。检查项包括:原本404的重点URL现在返回什么、是否出现新的404、重定向链是否过长、是否有URL同时被多条规则命中。抽样请求要覆盖不同类型的URL,而不是只测一两个。
如果复查发现流量或收录出现异常,先回到备份目录,用改动前的配置和响应快照还原,再重新评估规则。保存原始状态的意义正在于此:它让回退有据可依,而不是靠记忆重建。
下一步,从日志中筛出近期仍有访问的404 URL,列成清单,对每个URL记录当前状态码和引用来源,再决定是恢复内容、设置重定向还是保持404。