先给结论:不要追求“每个旧地址都找到唯一新页”,而要把旧地址分成三组——能确定唯一归宿的做单点重定向,只能确定归属栏目或内容簇的做簇级承接,确实没有对应内容的返回410并保留可读的说明页。判断依据不是直觉,而是旧地址的历史外链、历史点击和旧页面主题三者能否互相印证。下面用一个假设情境把决策过程走一遍。
假设某站点把原来的“教程”“案例”“问答”三个栏目合并为一个“资源”栏目,新页按新结构生成,旧地址没有保留一一对应关系。上线后出现一个与直觉相反的结果:整体抓取量没有明显下降,但来自旧地址的访问几乎归零。很多人的第一反应是“重定向没生效”,但这个解释并不唯一。
抓取量正常,说明新结构本身可被发现;旧地址访问归零,也可能是旧地址早已不再被引用、旧链接集中在少数几个页面、或者重定向被写成了全站跳到首页。要区分这些解释,需要可核对的证据,而不是继续改规则。
在设计映射之前,先把旧地址的证据收集齐,否则后面的分组都是猜的。
把这三项列成一张表,逐条标注“唯一对应”“簇内对应”“无对应”。这张表就是后面所有动作的依据。注意,访问量归零本身不能证明重定向写错,它也可能是旧链接本来就没有流量,需要和上表交叉验证。
常见的错误做法是按旧目录批量跳转,比如把 /old/tutorial/ 下所有地址都跳到新栏目首页。这样做的结果是:能确定唯一归宿的页面被浪费,簇内页面被过度集中,无对应页面被错误保留。
更稳的做法是按证据分组:
这个分组的实际动作是:先处理唯一对应组,再处理簇内对应组,最后统一处理无对应组。顺序会影响下一步——如果先批量处理无对应组,后面会发现有些页面其实有外链,需要回滚。
在 seo建站系统 里配置重定向时,尽量让规则可读、可回滚。假设用配置数组表达,可以写成类似下面的形式:
["/old/tutorial/a" => "/resource/a", "/old/tutorial/list" => "/resource", "/old/tutorial/gone" => 410]
规则写完后,不要只看“有没有跳”。验证要分两步:第一步,用旧地址请求,确认返回的状态码和目标地址与预期一致;第二步,检查目标页是否真的承接了旧页主题,而不是只承接了流量。如果目标页主题偏离,即使状态码正确,访问者也会立刻返回,这一步的结论会决定你是改目标页还是改映射。
另一个容易忽略的动作是保留映射表本身。当新结构再次调整时,这张表能告诉你哪些旧地址曾经被承接、承接到了哪里,避免二次迁移时把已经稳定的地址再次打乱。
如果旧站点的页面数量远大于新站点,且大量旧页没有外链、没有站内引用、主题也无法归入任何新簇,那么坚持一一对应只会制造大量低质量跳转。此时更合理的选择是:只承接有证据的地址,其余统一返回410。这个取舍的前提是你能接受部分旧地址彻底失效,并且已经确认它们没有值得保留的引用来源。
反过来,如果旧地址集中在少数几个高引用页面,即使新结构完全不同,也值得为这几个页面单独设计承接页,而不是让它们跳到栏目首页。判断标准始终是证据,不是页面数量。