核心原则是:不要追求“每条旧地址都能找到一条新地址”,而要先给旧地址分类,再为每类确定一个可解释的落点。旧地址与新页一一对应只适合路径规则稳定、栏目结构基本没动的情况;一旦栏目合并、内容下线或参数页大量存在,一一对应就会失控。更稳的做法是分层处理:能对上的做单点映射,成批的做规则映射,确实没有承接页的落到最接近的上级页并返回合适的响应状态。
假设有一个湖南本地的企业站,原来有约六百条旧地址,改版后新站只保留了两百多条内容页,其余是栏目页和已下线的产品。这个数字只是用于说明分类方法,不代表任何真实项目。此时可以按“是否还有等价内容”和“是否成批出现”两个维度分成四类:
分类之后你会发现,真正需要人工逐条处理的往往只是第一类,其余三类都可以用规则或批量策略解决。这一步的动作是产出两张清单:单点映射表和规则映射表。清单定下来之后,才能判断哪些旧地址确实无解,而不是一边做一边临时决定。
规则映射成立的条件是旧地址里保留了可识别的语义片段,比如栏目名、分类名或编号。如果旧地址是 /news/2023/0512-1.html 这类带日期和序号的路径,而新站改成 /news/某分类/某标题/,那么日期和序号无法直接推导出新地址,规则映射就会失效。这种情况下有两种选择:
选择哪一种,取决于你手里是否还有旧站的内容清单。有清单就值得做反查,因为单点映射对用户更友好;没有清单就不要硬撑,规则映射加明确的下线处理反而更干净。这一步的结果会直接影响下一步:如果反查命中率很低,说明旧站内容本身已经被大量替换,继续投入逐条映射的收益有限。
很多人的默认做法是把所有找不到对应页的旧地址都跳回首页。这在数量少时看不出问题,规模化之后会带来两个后果:用户点进来发现内容不对,以及搜索引擎无法区分“这个地址还有效”和“这个地址已失效”。更合理的判断标准是内容主题是否仍然存在:
需要说明的是,把旧地址指向栏目页只是过渡手段,它不能让用户直接看到原来的内容。如果这类地址占比很高,说明新站的内容覆盖相比旧站明显收窄,这时候要回到内容规划层面判断:是补回部分内容,还是接受这部分流量自然减少。这个判断不能靠跳转设置来回避。
映射上线后,常见做法是抽查几条地址,看到能跳转就认为完成。但个别样本成立不代表规模化后没有问题。更可靠的验证方式是观察旧地址的实际请求分布:哪些旧地址仍在被访问,它们分别落到了哪一类处理,以及是否存在大量请求集中落在“不存在”状态上。
如果发现某批旧地址持续有请求却全部返回不存在,有两种合理解释:一是确实还有外部链接或用户收藏指向它们,二是映射规则写错导致本应承接的地址被误判。这两种情况的处理方向完全不同,需要先看请求来源和地址形态再决定,不能仅凭“请求量没有归零”就断定映射正确,也不能仅凭“请求量归零”就断定处理得当——请求归零也可能只是统计口径变化或采集周期太短。
一个可执行的动作是:按路径前缀分组统计旧地址的响应状态,挑出请求量靠前且返回不存在的几组,逐组确认是内容确实下线,还是映射遗漏。确认之后,遗漏的补进映射表,确实下线的保持现状。这样一轮之后,映射表才从“看起来配好了”变成“经得起实际请求检验”。
上面这套分类加验证的方法,前提是你能拿到旧地址清单和一段时间的访问数据。如果旧站已经关闭、数据也没有留存,就只能依赖外部可发现的旧链接做有限还原,覆盖范围天然不完整,此时不必强求全量映射。另外,如果新旧站的内容体系差异极大,比如旧站是资讯型、新站是产品型,那么“主题承接”这个判断标准本身就不适用,应改为按用户意图归类,把旧资讯地址导向最接近的新内容入口,而不是硬找栏目对应。
把这些前提写清楚,比给出一张看似完整的映射表更有用,因为它决定了你在遇到例外时应该回到哪一步重新判断。