结论先说:不要追求“每条旧地址都找到一条新地址”的完美对应。更稳妥的做法是把旧地址分成三类——能保留的保留,语义接近的改写成新地址,确实无内容承接的让它退出并返回合适的错误状态。判断依据不是旧地址数量,而是每条旧地址背后是否还有真实访问需求、是否还有等价内容、以及错误跳转会不会把用户送进死胡同。
映射设计的第一步不是写跳转规则,而是给旧地址分类。可以按下面三个信号判断:
把这三类分开后,映射就不再是“全量对应”,而是“有依据地取舍”。一个可执行的动作是:先导出一份旧地址清单,给每条标注“保留/改写/退出”,再决定技术实现。这个标注结果会直接影响下一步——如果大量地址被标为退出,就不该再花时间做逐条重定向;如果大量地址属于改写,则应优先建立新旧内容的对应表。
三种处理方式没有绝对优劣,只有前提是否成立。
当旧地址本身仍是一个完整、可访问、有独立主题的页面时,保留最省事。前提是:它没有和新站结构冲突,且内容不需要合并。比如旧站某个介绍页在新站里仍是独立栏目,那就保留原地址,只更新页面内容。这样做的好处是外部链接和用户习惯都不被打断。但如果旧地址只是旧模板下的重复页,保留反而会让新站出现两套相似内容,这时应转向改写。
改写适用于“内容还在,但地址结构变了”的情况。前提是你能为每条旧地址找到一条语义最接近的新地址,而不是统一指向首页。假设旧地址是 /old-service-a.html,新站对应页面是 /services/a/,且两者讲的是同一类服务,那么做一次 301 改写是合理的。这里的关键动作是建立映射表,逐条确认目标页确实能回答旧地址原本要回答的问题。如果目标页只是分类页,而旧地址是具体介绍页,用户点进去会感到落空,这种改写就不成立,应改为退出或补建内容。
退出不是失败,而是避免制造新的误导。前提是:旧地址确实没有可承接的内容,且没有持续的外部访问需求。处理方式是返回 404 或 410,并让站点自己的错误页提供清晰导航。不要把所有旧地址都 301 到首页,因为那会让用户和后续维护者都误以为“已经处理好了”。一个实际动作是:先观察这些退出地址在一段时间内的访问情况,如果仍有稳定访问,再回头补内容或做更精确的改写;如果访问极少,就保持退出状态。
映射表不需要覆盖所有旧地址,但必须覆盖“保留”和“改写”两类。建议每条至少记录四项:旧地址、处理方式、目标地址(退出类留空)、判断依据。判断依据可以写“外部引用仍在”“语义对应新服务页”“无等价内容”。这样做的结果是,后续无论谁接手,都能看懂某条规则为什么存在,而不是只看到一堆跳转。
颗粒度上,避免用通配符把整个旧目录一股脑指向新目录。通配符适合处理有规律的批量地址,但前提是规律确实成立。如果旧目录里既有服务页又有文章页,统一指向新目录首页就会把不同意图的访问者混在一起。更稳的做法是先按内容类型分组,再对每组分别决定保留、改写或退出。
假设某站点改版后,旧地址里有 100 条记录。按上述方法分类后:20 条保留,50 条改写,30 条退出。接下来的动作不是立刻写 100 条跳转,而是先处理 50 条改写,因为它们的映射关系需要人工确认;20 条保留只需确认页面仍可访问;30 条退出则配置错误状态并检查错误页导航。这个顺序的依据是:改写类最容易出错,也最影响用户是否能找到等价内容。如果先做退出类,虽然操作快,但并没有解决主要访问需求。
处理完改写类后,再回头检查退出类是否仍有访问。如果发现某条退出地址访问量不低,说明它背后可能还有未识别的需求,这时应把它重新归入改写或补建内容,而不是继续让它报错。这个动作的结果会直接改变下一轮映射表的分类。
一个常见误区是把“地址变了”等同于“必须全部跳转”。实际上,只有存在等价内容或持续访问需求时,跳转才有意义。另一个误区是只看技术实现,不看内容对应。301 本身不会判断目标页是否合适,判断仍然来自人工分类。
适用条件也需要说明:如果旧站本身没有可访问的历史记录,或者旧地址从未被外部引用,那么映射工作的优先级可以降低,重点转向新站结构。反之,如果旧地址仍在邮件、广告或合作页面中出现,就应优先处理。不要把“访问量归零”单独当作处理正确的证据,因为访问量下降还可能来自统计代码变更、外部链接移除或抓取频率变化,需要结合其他信号判断。
最终,映射设计的目标不是让每条旧地址都消失,而是让仍有价值的访问落到仍有价值的内容上,让没有承接的地址干净地退出。