改版上线一周,流量掉了一半。检查下来发现,旧地址全部跳到了首页——这是改版里最常见、也最致命的错误。
先分清两种跳转
- 301:永久移动,告诉搜索引擎"这个地址以后不用了,权重请转到新地址"
- 302:临时移动,搜索引擎会保留原地址,不传递权重
改版必须用 301。用 302 的话,搜索引擎会一直等旧地址"回来",新页面迟迟拿不到权重。
最不该做的事
把找不到对应关系的旧地址全部跳到首页。搜索引擎把这种行为识别为"软 404"——你告诉它页面存在,但实际内容完全不相关。结果是这些页面的权重直接作废。
如果确实找不到对应页面,正确的处理是:返回 404 或者跳到最相近的栏目页,而不是全部堆到首页。
先做映射表
跳转配置的前提是一张完整的表。这样做:
- 导出旧站全部 URL(抓取工具或者后台导出)
- 标注每条地址的价值:有没有流量、有没有外链、有没有排名
- 逐条确定新地址:优先找内容最相近的页面
- 高价值地址重点核对:前二十条人工确认,不能靠猜
几百条地址听起来很多,但大部分可以用规则批量处理,真正需要人工判断的往往只有几十条。
常见服务器的写法
规则匹配适合批量,单条适合特殊地址:
# Nginx 单条rewrite ^/old-page\.html$ /new-page/ permanent;# Nginx 规则批量(产品目录变更)rewrite ^/products/(\d+)\.html$ /product/$1/ permanent;# ApacheRedirect 301 /old-page.html /new-page/注意顺序:具体规则写在通用规则前面,否则会被通用规则先匹配掉。
如果用的是托管平台
很多建站系统和 CDN 提供可视化跳转配置,原理一样。配置时注意:
- 确认生成的是 301 而不是 302
- 跳转链不要超过两跳(A→B→C 会损失权重且变慢)
- 保留查询参数的处理,别把带参数的地址丢掉
- 配置后逐条测试,看实际返回的状态码
上线前怎么验证
用命令行或者在线工具检查状态码:
curl -I https://example.com/old-page.html# 应返回 301,并带 Location 指向新地址至少抽查这三类:高流量的旧地址、有外链的旧地址、带参数的旧地址。每类抽五条,逐条确认跳转到正确的新页面,而不是首页。
上线后要盯的事
- 每天看抓取异常报告:新出现的 404 立即补跳转
- 每周看索引量变化:正常情况下应该在一两个月内恢复
- 关注核心词排名:波动是正常的,持续下滑要排查
- 跳转保留至少一年:别刚恢复就急着删掉
一个提醒
跳转规则本身也要维护。写进项目文档里,说明为什么这么配、哪些是临时的。两年后接手的人看到一堆 rewrite 规则,如果不知道来龙去脉,很容易误删。
跳转是改版的保险。做得好,损失可控;做得潦草,半年流量都回不来。
—— 一位救过多次改版事故的运维工程师