先把当时的情况摆出来。整站换域名时为了「方便回滚」用了 302 临时跳转,一个月后新站排名没有起色,旧站还在结果里,GSC 里新域名几乎没有抓取量。
真正麻烦的地方在于,几个原因的现象几乎一样。302 表示临时跳转,蜘蛛不会把权重转移过去。另一种情况是旧站的 canonical 仍指向自己,信号自相矛盾。
少数情况下是新站 sitemap 提交了,但旧站没有做地址更改。不容易想到的是,跳转保留了原路径参数,部分页面 302 后落到 404。
上来先确认跳转码
curl -sI https://old.example.com/post/1 | grep -Ei 'HTTP/|location'
随后把 302 批量改成 301
rewrite ^/(.*)$ https://www.example.com/$1 permanent;
然后确认旧站 canonical 不再指向自身
curl -s https://old.example.com/post/1 | grep -i canonical
末了统计改完后新站的抓取量
grep -c 'www.example.com' /var/log/nginx/access.log
别只看报错消失,验证要多做一步。旧站全部返回 301,新站抓取量一周内翻倍,两个月后主要关键词排名回到迁移前。
容易忽略的是,用 302 观察几天可以,超过一周就该换 301,临时跳转挂太久等于把迁移拖着不做。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。
