事情本身不复杂,线索都在日志里。站点同时能打开 example.com 和 www.example.com,sitemap 里两种写法混着用,GSC 里收录数据一直对不上,怎么查都别扭。
原因不止一个,得分开看。两个主机名各自返回 200,没有做统一跳转。另一种情况是sitemap 生成时读的是后台站点地址,和实际访问域名不同。
少数情况下是canonical 又指向第三种写法,三个信号互相冲突。
先确认两个域名是否都返回 200
curl -sI http://example.com | head -1
然后统一 301 到一个主域名
return 301 https://www.example.com$request_uri;
等前面都确认过,再把站点地址和 sitemap 域名改成一致
UPDATE wp_options SET option_value='https://www.example.com' WHERE option_name='siteurl';
那几天正好在做别的变更,先把时间线对齐才敢动手。
排查用的命令都是临时敲的,没有写成脚本,事后才整理。
恢复的判定其实很直接。非主域名全部 301,sitemap 里只剩一种域名,GSC 里不再出现两套重复数据,收录数量合并计算。
提醒一点。只改 sitemap 不改站点地址,下次重新生成又会回到旧域名,根子在数据库里的 siteurl 和 home 两个字段。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。