结论先行:当旧地址无法与任何新页一一对应时,不要强行凑一对一,而应先按“语义最近页”和“无对应页”两类分流,再用站点级兜底承接剩余流量。这个结论成立的前提是:你能拿到旧地址清单,或至少能拿到访问日志中的高频旧地址;否则只能先做小范围兜底,不能宣称映射已经完成。
“对不上”通常不是同一种问题,处理方式也不同。
判断依据可以只靠两样东西:旧地址的路径文本和页面标题。路径里有分类词、标题里有明确主题的,优先做语义最近匹配;两者都无意义的编号式地址,才进入兜底池。
没有全量清单、没有后台导出权限时,仍可执行一个最小动作:从服务器或 CDN 访问日志中提取最近一段时间内返回 404 的旧地址,按访问量从高到低排序,先处理前几十条。
这个动作的结果会直接决定下一步:如果高频 404 集中在少数几个栏目路径下,说明旧站结构相对集中,可以按栏目前缀做批量映射;如果高频 404 分散在大量无规律地址上,说明旧站可能是动态参数或编号体系,此时逐条映射成本过高,应优先扩大兜底规则的覆盖面,而不是继续逐条补。
需要说明的是,404 数量下降本身不能证明映射正确。它还可能来自爬虫停止抓取、日志采样窗口变化,或旧地址本身访问量就低。要判断映射是否有效,应看被映射页面上的用户后续行为是否正常,而不是只看错误码是否归零。
假设旧站有三个地址:/a/12、/a/13、/a/14,分别讲“表单设计”“表单校验”“表单提交”。新站只保留一页“表单设计”。一对三显然不成立,但三个旧地址的语义都落在同一主题下,全部指向该页是合理的。
反过来,如果 /a/12 讲表单、/a/13 讲支付、/a/14 讲物流,而新站只有一页“订单流程”,那么把三者全部指向它就会让支付和物流的访问者落地后找不到对应内容。此时更合适的做法是:支付和物流分别指向新站中最接近的页面;若确实没有,则进入说明页,并在说明页给出下一步可去的入口。
如果旧地址本身从未被外部引用、也几乎没有访问记录,那么为它设计精细映射的收益极低,此时“语义最近页”原则仍然成立,但投入产出比不支持逐条处理。更实际的做法是只保留站点级兜底,把精力放在有实际流量的旧地址上。
另一个反例是:旧地址带有明确的用户预期,比如旧站曾承诺某个固定入口长期可用。这种情况下,即使新站没有对应内容,也不应简单跳转到首页,而应保留一个说明页,明确告诉用户内容去了哪里。否则用户会认为站点失效,而不是内容调整。
先做三件事:第一,导出或抽样获取旧地址清单;第二,按“语义最近页、无对应页、无流量页”三类标记;第三,为前两类分别配置映射和兜底,第三类暂不处理。
配置完成后,不要只看状态码。应抽查若干条映射,确认落地页主题与旧地址主题一致;同时观察被映射页面的跳出情况是否异常。如果某条映射的落地页跳出明显高于同类页面,说明映射可能选错了目标,应回到清单重新判断,而不是继续批量套用同一规则。