这个坑值得记一笔。全站切换 https 时用了 302 临时跳转,半年后 http 版本的收录还在,两个版本同时存在。

原因不止一个,得分开看。302 不传递权重,也不会替换索引里的地址;http 和 https 都能访问,没有强制跳转;canonical 仍指向 http。

第一件事是确认跳转的状态码

curl -sI http://www.example.com/a/ | head -1

接着改成永久跳转

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

同步修正 canonical 与站点地址

wp option update home 'https://www.example.com'

隔了一天再看,现象没变,说明不是偶发。

那几天正好在做别的变更,先把时间线对齐才敢动手。

排查用的命令都是临时敲的,没有写成脚本,事后才整理。

别只看报错消失,验证要多做一步。http 版本全部 301 到 https,索引逐步合并成一份,权重集中到新地址。

容易忽略的是,302 用在协议切换上几乎没有效果,搜索引擎会认为你随时可能切回去,索引也就一直保留两份。改完清掉浏览器缓存再测,站点地址、canonical、sitemap 三处要同时切换,漏掉一处就会再冒出一批重复地址。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。

作者 9823189