问题出现得很突然,日志倒是留得挺全。换域名时运维习惯性用了 307,理由是担心浏览器缓存。三个月过去,旧域名的外链权重一点没过来,新域名内页还排在第二页,GSC 里旧资源的数据也没降。

刚开始盯着「旧域名 robots 仍放行,两套内容同时被抓」,折腾了半个多小时,排掉了。

真正麻烦的地方在于,几个原因的现象几乎一样。307 表示临时跳转,不传递页面权重。少数情况下是跳转规则只覆盖首页,内页仍返回 404。

少数情况下是GSC 的地址更改工具一直没提交。

先确认跳转状态码

curl -sI https://old.example.com/article/1 | head -1

接着改成 301 永久跳转

return 301 https://www.example.com$request_uri;

覆盖全部路径而不是只跳首页

rewrite ^/(.*)$ https://www.example.com/$1 permanent;

提交地址更改并观察

https://search.google.com/search-console

别只看报错消失,验证要多做一步。旧域名所有路径返回 301 并指向新域名对应地址,两个月后新域名的内页开始接住旧权重。

这里还有个坑。307 和 302 一样不合并权重,迁移只有 301 一条路,担心缓存可以缩短 TTL 而不是换状态码。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。

作者 9823189