结论:迁移后老 URL 必须做“一对一、单跳、长期保留”的 301 永久重定向——每条老 URL 精确指向内容最对应的新 URL,中间不留链式跳转,重定向至少保留 1 年不停。做不到一对一映射时,宁可让无对应内容的旧页返回 404,也不要把全站老 URL 一律 301 到首页。
301 和 302 该用哪个?
结论:站点永久迁移只用 301(HTTP 状态码 301 Moved Permanently,表示资源永久搬走),不要用 302 或 307。
301 是唯一会告诉搜索引擎“旧地址作废、请把索引和权重结算到新地址”的信号。Google 官方文档明确,301 适用于永久性迁移,原 URL 的排名信号会传递到目标 URL,但不承诺“100% 无损”;迁移期出现 2~8 周的排名波动是正常现象。302/307 是临时跳转,旧 URL 会继续留在索引里,长期使用等于把权重留在原地。
同时排除三类“伪重定向”:JS 跳转、<meta http-equiv="refresh">、前端路由跳转。这三种搜索引擎虽能执行,但信号强度远弱于 HTTP 301,且对不执行 JS 的爬虫直接失效。
老 URL 到新 URL 的映射表怎么建?
结论:先出表、再上配置,映射表的完整度直接决定这次迁移丢不丢流量。
具体步骤:
- 用爬虫工具导出旧站全量 URL。Screaming Frog 免费版单次上限 500 条,站点超过 500 条 URL 需用付费版或按 sitemap 分批抓。
- 同步拉取旧站 sitemap.xml、Search Console「网页」报告里的已收录 URL、服务器访问日志中出现过 200 状态码的路径——这三处能补上爬虫没抓到的长尾页。
- 在 Excel 建两列:
old_url / new_url,逐条人工确认目标页内容对应关系。标题相似但内容不同的页面不要硬凑,标记为“无对应”。
- “无对应”的旧页统一返回 404(内容彻底删除用 410),不要 301 到首页或栏目页。批量跳首页会被判定为 soft 404(软性 404,即返回 200 但内容与请求无关),这部分页面等于白送。
- 映射表按路径规则归类,能用一个正则覆盖的合并成规则,减少配置条数。
nginx 和 Apache 的 301 规则怎么写?
结论:优先用 return 301,它比 rewrite ... permanent 少一次正则匹配开销,且不会因为 location 匹配顺序产生循环。
nginx 单条精确映射:
location = /old-page.html {
return 301 https://www.example.com/new-page/;
}
nginx 批量正则(旧 /post/123.html → 新 /article/123):
location ~ ^/post/(\d+)\.html$ {
return 301 https://www.example.com/article/$1;
}
Apache(.htaccess):
Redirect 301 /old-page.html https://www.example.com/new-page/
# 或正则
RewriteRule ^post/([0-9]+)\.html$ https://www.example.com/article/$1 [R=301,L]
必须同步处理的三件事:全站统一 http → https、统一 www 与非 www、统一结尾斜杠与大小写。否则用户从老 URL 进来会触发“老页 → http 首页 → https 首页 → 新页”的多跳链路。
为什么重定向链和“全站跳首页”最伤 SEO?
结论:链路越长,爬虫抓取预算消耗越多,信号传递越弱;搜索引擎的建议是重定向链不超过 5 跳,实践中控制在 1 跳。
一次迁移里最典型的错误链路是:旧域名 http 页 → 旧域名 https 页 → 新域名首页 → 新域名目标页,共 3~4 跳。每一跳都要重新发起请求,爬虫在单个 URL 上的抓取预算有限,长链会直接降低收录速度。正确做法是在第一跳就地直连最终目标 URL。
另一个高频错误是把已改版的旧栏目整体 301 到新栏目首页。只有当旧栏目所有文章确实被合并成一篇汇总页时才成立;否则应该逐篇映射到新文章页。
迁移上线后还要做哪几件事?
结论:配置写完只是开始,真正决定收录恢复速度的是提交与监控动作。
- 新站 sitemap.xml 更新为全量新 URL,在 Search Console 和 Bing Webmaster Tools 重新提交;旧 sitemap 保留 1~3 个月,方便爬虫顺着旧入口发现 301。
- 站内所有内链、导航、面包屑、文章正文链接全部替换为新 URL,让站内点击不再经过 301。
- 新页面的 canonical(规范链接标签)指向自身新 URL,不要再指回旧地址。
- 同域名换路径可直接用 Search Console 的「地址更改」工具;换域名需同时验证新旧两个资源,且旧资源要保持可访问、可返回 301。
- 上线后 30 天内每周看三处数据:Search Console「网页」报告的 404 与“已通过重定向提交的网页”数量、抓取统计里的 301 命中量、服务器日志中 301 是否随天数下降(下降说明爬虫已完成向新 URL 的切换)。
301 要保留多久才能撤?
结论:永久迁移的 301 至少保留 1 年,最稳妥是长期保留、不主动撤除。
原因有两层:一是搜索引擎需要重新抓取旧 URL 才能发现 301,站点 URL 量越大,全量重抓耗时越长;二是站外仍存在指向旧 URL 的外链,撤掉 301 后这些外链会直接落到 404,浪费掉外部链接价值。Google 文档的表述是永久重定向应尽可能长期保留,Bing 则明确建议至少保留 1 年。满足“旧 URL 在 Search Console 里连续 6 个月无抓取记录、外链已基本更新”这两个条件后,才可以考虑撤除。
一句话收束:迁移的成败不在于 301 写没写,而在于映射表是否一对一、链路是否只有一跳、规则是否留够 1 年以上,再配合 sitemap 提交与 30 天数据监控,把排名波动压到最短周期。