结论先说:不要追求每个旧地址都找到唯一新页,而要把旧地址按“内容是否仍有价值”分成三类——能一对一继承的、只能归并到栏目的、应当明确失效的。三者分别用不同形式的HTML链接代码处理,比强行补全映射更可靠。但有一个反例会使这套做法失效:如果旧地址背后是外部系统或合作方正在调用的接口,而不是给人点击的页面,那么映射规则必须由双方约定,不能由你单方面决定。
历史地址的来源不同,处理方式也不同。常见的有三种:
判断依据不是地址长什么样,而是这个地址当初承载的内容今天是否还有意义。内容还在,就继承;内容被拆散,就归并;内容彻底作废,就让它失效。
一对一映射最省事,也最容易做错。成立的条件有三个:新旧页主题一致、正文主体一致、用户到达新页后能找到原来的信息。满足这三条,才适合用跳转把旧地址接到新地址。
技术上有两种写法。服务端返回跳转状态,让浏览器自动转到新地址;或者在旧页里放一段HTML链接代码,例如 <a href="/new-page">继续阅读</a>,让用户手动点击。前者适合内容确实迁移了的情况,后者适合需要向用户说明“内容已迁移”的场景。两者不要混用在同一批地址上,否则同一类旧地址会出现两种到达体验。
动作上,先给旧地址做一份清单,标注每条地址属于哪一类。做完这一步,你会发现真正需要一对一映射的地址数量通常远少于总量,剩下的按栏目归并或直接失效即可。清单的质量直接决定后面映射表能不能维护。
栏目型旧页没有唯一对应关系,常见的错误是给每条旧地址都找一个勉强相关的新页,结果用户点进去发现内容对不上。更稳的做法是归并到最接近的栏目首页或分类页,并在该页给出到具体内容的链接。
假设一个旧的产品分类页下原有二十个产品,新产品线只保留了其中八个。这时把旧分类页指向新分类页,比拆成二十条跳转更清晰:用户先到分类页,再选具体产品,路径符合预期。这里的假设是新产品分类页确实覆盖了保留的那部分内容;如果新分类页只覆盖其中一小部分,归并就会让用户找不到东西,这时应改为一对一映射到子分类。
归并动作做完后,下一步是抽查:随机挑几条旧地址,实际访问一次,确认落点页面里能找到与原地址相关的内容。抽查不通过,说明归并层级选错了,需要回到清单重新分类。
废弃型旧页如果统一跳回首页,用户会以为自己点错了,反复尝试同一个地址。更合理的做法是让旧地址返回明确的失效状态,并在页面上说明该内容已下线、可以去哪里找相关内容。
这里要区分两种现象:旧地址访问量下降,可能是内容确实没人需要了,也可能是跳转配置出错导致用户到不了。不能只看访问量归零就断定该地址应该废弃。合理解释还包括外部链接被撤下、入口页面改版、站内导航调整等。要确认原因,需要同时看旧地址的到达情况和落点页面的内容匹配度。
如果旧地址是外部系统、合作方或客户端在调用的接口地址,而不是给人点击的页面,那么上面按内容价值分类的方法就不适用。接口地址的映射必须由调用方和被调用方共同确认,单方面跳转或失效会直接打断对方的功能。
判断方法很简单:看这个地址的访问来源是浏览器还是程序。来源是程序调用,就先联系调用方,确认迁移安排,再决定旧地址保留多久、返回什么状态。这一步没做,后面所有映射设计都可能白做。
把旧地址清单整理成一张映射表,每条记录包含旧地址、分类、目标地址或失效状态、处理方式。分类完成后再动手写HTML链接代码,而不是边写边想。映射表建好后,先处理一对一继承的部分,再处理归并,最后处理失效。每处理完一类,抽查几条实际访问结果,确认落点符合预期后再进入下一类。这样做的结果是:映射规则可核对、可维护,后续新增旧地址时也有现成的分类依据可用。