改版换了 URL 结构,老链接全部变成 404,搜索流量几天内掉一半。301 是把权重接过来的唯一办法,但规则写错会变成互相跳转。

先做一张对照表

从旧 sitemap、访问日志、搜索资源平台的索引量里导出老 URL,再逐条对应到新地址。没有对照表就凭感觉写规则,必然出现跳错页。

Nginx 里的两种写法

location = /old-article.html {
    return 301 /new-article.html;
}
rewrite ^/old/(.*)$ /new/$1 permanent;

单条用 location 精确匹配最稳,规律相同的批量用 rewrite。注意 rewrite 写在 server 块里,顺序从上到下,前一条命中后面的就不执行了。

三条硬规则

  • 必须跳转到内容最相关的新页面,不要全站跳首页
  • 用 301 而不是 302,302 不传递权重
  • 跳转链只走一跳,别 A 跳 B 再跳 C

验证方式

curl -I https://你的域名/old-article.html

状态码必须是 301,Location 是新地址。批量验证时把老 URL 列表跑一遍,统计非 301 的条目逐个修,改完至少保留半年再考虑清理。

改版顺序建议

先把新站内容上线并确认可访问,再切 301,最后提交新 sitemap。顺序颠倒会出现一段时间的无效跳转,搜索引擎抓到的全是错误地址,恢复周期更长。

旧站如果还要保留一段时间,注意别让新旧两套页面同时可访问,内容重复会分散权重,正确做法是新页面为准,旧地址只做跳转。

作者 9823189