404 not found 表示服务器收到了请求,但找不到对应资源。迁移后旧地址没有完全等价目标时,判断的核心不是“能不能做 301”,而是旧地址承载的意图是否仍有对应内容:有对应就做 301 指向最接近的可用页,没有对应就让旧地址返回 404 或 410,不要统一跳首页。个别样本成立不代表可以规模化照搬,边界在于旧地址是否仍有可替代的落点。
迁移中最容易犯的错,是把所有旧地址都指向新站首页。这个做法在只有几个旧地址、且旧地址本身就是品牌词入口时可能看不出问题,但规模化后会出现大量无关旧地址全部落到同一页,用户和抓取端都拿不到有效信号。
判断条件可以拆成两条:
两种条件对应两种动作,不能混用同一套映射规则。
当旧地址的意图在新站仍有承接,301 的目标应该是“最接近的可用页”。判断依据按优先级排列:
实施动作:先在旧站导出访问量靠前的旧地址清单,逐条标注“有等价页 / 无等价页”,再为有等价页的条目填写唯一目标 URL。完成后用 curl -I 检查旧地址返回的状态码和目标地址,确认返回 301 且 Location 指向预期页面,而不是落到首页或错误页。
这个动作的结果会直接影响下一步:如果抽查发现大量旧地址都跳到了首页,说明映射规则过粗,需要回到清单重新按主题分组,而不是继续扩大重定向范围。
旧页对应的内容已经不存在,新站也没有同主题页面时,正确做法是让旧地址返回 404 或 410。统一跳首页会制造两个问题:用户看到与预期无关的内容,抓取端也无法区分“已删除”和“仍存在但换了位置”。
这里有一个常见误解:用 robots.txt 屏蔽旧地址不等于移除索引。robots.txt 只限制抓取,不保证已收录地址从结果中消失;如果旧地址被屏蔽,抓取端反而可能无法看到 404 状态。因此对确定下线的旧地址,应让服务器正常返回 404 或 410,而不是用 robots.txt 挡住。
另一个误解是提交站点地图就能解决。站点地图描述的是希望被发现的地址,不保证收录,也不负责移除旧地址。旧地址的处置仍要靠 HTTP 状态码和站内链接更新。
个别样本成立、规模化后失效,通常出现在以下例外中:
假设一个迁移场景:旧站有 200 个产品页,其中 150 个在新站有同名或同主题页面,50 个产品已下架。若把 200 个旧地址全部 301 到新站首页,抽查时会看到大量旧地址返回 301 但目标都是首页;正确做法是 150 个指向对应产品页,50 个返回 404 或 410。这个例子只用于说明比较方法,不代表任何真实站点数据。
验证分两层:
如果验证发现大量旧地址返回 404,不能只凭这一现象判断处理正确。404 数量上升还可能来自抓取范围扩大、日志采样变化或旧地址本身访问量低,需要结合旧地址清单和访问来源分别核对。不同搜索引擎对 404 与 410 的处理节奏可能不同,应分别核查,不把某一家的表现当作通用结论。
最终选择可以归结为一句话:旧地址有可替代落点就指向最接近的页,没有就让它明确返回 404 或 410;规模化前先按主题分组核对,再用状态码抽查验证,发现目标错配就回到分组修正,而不是继续扩大统一跳转。