结论先说:如果旧地址能按栏目或内容类型成批对应到新页,优先用规则映射加少量人工例外;如果旧地址与新页之间没有稳定规律,只能逐条确认时,就不要硬造规则,改用兜底页加人工清单。判断依据不是旧地址有多少,而是你能否用一条可重复的规则覆盖大多数旧地址,并且这条规则不会把用户送到错误内容上。
规则映射适合旧站栏目结构清晰、新站保留了同类层级的情况。例如旧地址是 /news/2023/05/abc.html,新站对应 /zixun/abc/,如果栏目名、内容标题或编号能稳定提取,就可以用一条重写规则处理整批地址。这样做的代价是规则一旦写错,会成批产生错误跳转,所以上线前必须抽样验证,而不是只看规则能否跑通。
一个可操作的动作是:先导出旧地址清单,按路径前缀分组,统计每个前缀下能对应到新页的比例。如果某个前缀下超过八成地址都能通过同一条规则找到新页,就值得保留这条规则;剩余两成单独列成例外表。这个比例只是判断方法,不是固定门槛,具体阈值要看错误跳转的代价。
当旧站经历过多次改版、栏目名被反复替换,或者旧地址里含有无法还原的编号时,规则映射往往会把用户带到不相关的新页。这时逐条映射更稳,但维护成本高:需要为每个旧地址指定一个新页,或者明确标记为不再提供内容。逐条映射的关键不是把每条都跳走,而是区分“有对应新页”和“没有对应新页”两类。
没有对应新页时,把旧地址全部跳到首页并不是好做法。用户带着具体预期点进来,落到首页后往往还要重新找,容易直接离开。更合适的做法是跳到一个说明页,告诉用户该内容已调整,并给出最接近的栏目入口或搜索入口。这个动作的结果是:用户至少知道发生了什么,而不是被丢到一个无关页面。
假设旧站的文章地址是 /a/123.html,新站的文章地址是 /p/456.html,两边编号完全不同,也没有标题字段可以匹配。这时无论规则映射还是逐条映射,都不能靠地址本身建立对应关系。唯一可靠的办法是回到旧站的内容清单,用标题、发布时间或正文摘要去匹配新站页面,再生成一张映射表。如果连这张表也无法建立,那么“映射”本身就不成立,只能做兜底处理。
这个反例说明:映射的前提是存在可识别的对应关系。没有对应关系时,强行设计规则只会制造看似完整、实际错误的跳转链。
建议先做一次小范围验证:从旧地址里按前缀各抽一批,手动确认它们在新站是否有合理落点。验证结果会直接决定下一步:
无论选哪种方式,都要在映射上线后检查旧地址的实际落点,而不是只检查规则文件是否存在。检查时重点看三类地址:曾经有外部链接指向的、曾经带来咨询的、以及栏目首页。前两类影响用户和合作方,第三类影响整站结构。发现错误落点后,先修正影响面最大的那批,再处理长尾。
历史地址映射不只是技术配置,它同时决定了哪些旧内容被保留、哪些被放弃。规则映射省力,但要求旧新结构足够一致;逐条映射准确,但需要持续投入。选择时不要只看旧地址数量,而要看错误跳转的代价和可识别对应关系的比例。先验证,再决定,最后用实际落点检查结果,这样才能让旧地址在新站里继续发挥作用,而不是变成一批无人维护的死链。