改版或迁移时,对HTTP状态码404的核对目标不是“把所有404都消灭”,而是先确认原本能正常访问的URL没有因为改版变成404,再决定哪些404需要修复、哪些可以保留。时间和人手有限时,优先级应是:先抓取全站旧URL并记录状态码,再核对有搜索流量或内部链接指向的404,最后才处理无引用、无价值的死链。
没有旧URL清单,就无法判断404是“本来就不存在”还是“迁移后新产生的”。从交付结果倒推,第一步要拿到改版前的URL列表,来源可以包括:
把这些URL逐条请求一次,记录HTTP状态码。返回404的,标记为“迁移后失效”;返回200的,标记为“仍可访问”;返回301或302的,记录跳转目标。只有先完成这一步,后面的修复才有依据。
同样是404,原因不同,处理动作也不同。可以用下面的判断表快速分流:
这里要特别注意:robots.txt中的抓取限制不等于可靠的索引移除。即使你屏蔽了某个路径,搜索引擎仍可能因外链或历史记录保留该URL的索引信息。要移除索引,应使用对应的noindex或站长平台移除工具,并分别核查不同搜索引擎的支持情况。
改版时常见的失误是:旧URL设置301指向了一个新URL,但那个新URL后来又被改掉,结果跳转链末端变成404。核对时要跟踪整条跳转链,直到最终状态码为200。可以用命令行工具逐条检查:
curl -I -L https://example.com/old-page
输出中关注最后一跳的HTTP状态码。如果最终是404,说明跳转目标已失效,需要更新301规则。适用条件是服务器或CDN上配置了重定向规则;判断结果是“跳转链末端404”,处理方式是把301目标改为当前有效URL。
旧URL如果已经301到新URL,站点地图中应只保留最终可访问的URL。站点地图不保证收录,但提交404地址会浪费抓取资源,也会让核对结果变得混乱。内部链接同样要替换:导航、面包屑、正文中的旧链接如果还指向404,用户和搜索引擎都会持续撞到死链。
检查项可以设为:随机抽取20个旧URL,确认它们要么301到200页面,要么返回404且无内部链接指向。如果某个404仍被站内多处链接引用,应优先修复链接或恢复页面。
下一步可以直接从服务器日志中提取最近30天出现过的404请求路径,与旧URL清单交叉比对,先处理同时出现在两份数据中的地址。