先给结论:不要试图为每个旧地址都找到一个新页面。正确做法是先给旧地址分类,能一对一的做301,不能一对一的做410或归并到最相关的栏目页,并保留一份可追溯的映射清单。判断依据不是旧地址数量,而是旧页面是否仍有独立价值、是否还有外部链接指向它、以及新站是否真的存在语义对等的内容。
逐条映射成立的条件有三个:旧地址数量可控,通常能人工过一遍;每个旧地址对应的内容在新站有语义对等的页面;旧地址有可确认的外链或访问记录。满足这些条件时,一对一301是最稳妥的选择,因为它把旧地址积累的信号完整传递到最接近的新页面。
批量归并成立的条件是:旧页面本身是低价值聚合页、分页、筛选参数页或已下架的产品页;新站结构变化太大,找不到语义对等页;旧地址数量远超人工处理能力。这时把所有旧地址统一指向首页或某个栏目页,比让它们返回404更可控,但代价是相关性被稀释——用户点进来看到的不是他原本要找的内容。
两种做法可以并存:核心内容页逐条映射,长尾和无效页批量归并到最近的上级栏目。关键是把边界划清楚,而不是二选一。
拿到旧地址清单后,按下面的顺序过一遍,每个地址只归入一类:
分类完成后,映射清单至少包含四列:旧地址、处理方式、目标地址、判断理由。这份清单本身就是后续排查的依据,比事后凭记忆猜测可靠得多。
假设旧站有一批产品页,新站把产品线合并成了三个大类。先不要急着写规则,而是抽10到20个旧地址,手动访问旧页面快照,记录它原本讲的是什么。这个动作的结果直接决定下一步:如果抽样发现多数旧页面内容高度重叠,就说明批量归并到三个大类页是合理的;如果抽样发现每个旧页面都有独立的产品参数和说明,就应该逐条301到对应的新产品页,哪怕工作量大。
规则上线后,用旧地址清单逐条请求,确认返回状态码和目标地址是否符合预期。重点检查三类问题:本该301的返回了404,本该410的被301到了首页,以及目标地址自身又发生了跳转形成链条。发现链条就要把中间跳转去掉,直接指向最终地址。
有几种情况需要单独处理,不能套用上面的规则:
这些例外不需要为每个地址单独开发功能,但需要在映射清单里标注清楚,避免后续维护时被误改。
映射不是一次性工作。新站上线后,旧地址可能还会被外部引用,站内也可能继续产生新的失效链接。建议把映射清单放在版本控制里,每次调整站点结构时同步更新。定期抽查一批旧地址,确认状态码和目标地址没有因为后续改版而失效。如果发现某个旧地址的访问量持续存在但目标页已经变更,说明映射需要重新评估,而不是维持现状。
回到最初的问题:历史地址没有一一对应新页时,映射的设计目标不是让每个旧地址都活着,而是让每个旧地址都有明确的归宿,并且这个归宿可以被解释、被检查、被修改。