改版换了 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。顺序颠倒会出现一段时间的无效跳转,搜索引擎抓到的全是错误地址,恢复周期更长。
旧站如果还要保留一段时间,注意别让新旧两套页面同时可访问,内容重复会分散权重,正确做法是新页面为准,旧地址只做跳转。