问题出现得很突然,日志倒是留得挺全。站点 canonical 统一输出 https://www.example.com,但 Nginx 里配了裸域 301 到 www,蜘蛛每次访问 canonical 地址都要跳一次,GSC 提示备用网页占了六成。

刚开始盯着「主题里硬编码了带 www 的域名,换域名后没有跟着改」,折腾了半个多小时,排掉了。

这类报错背后常见的原因有几处,逐个排除就行。canonical 指向的地址不是最终返回 200 的地址。还有一种是裸域与 www 各有一套证书,蜘蛛在两套地址之间反复验证。

少数情况下是HSTS 只对 www 生效,裸域请求仍然走 http。

第一件事是对比 canonical 与最终落地地址

curl -s https://www.example.com/post-1024/ | findstr /i canonical

接着看裸域是否直接返回 200

curl -s -o NUL -w "%{http_code} %{redirect_url}\n" https://example.com/post-1024/

随后把 canonical 改成最终地址

UPDATE wp_options SET option_value='https://example.com' WHERE option_name='home';

末了清缓存后复验两条地址

curl -sI https://example.com/post-1024/ | findstr /i "HTTP location"

改完先别撤,确认这几项。canonical 与最终地址统一后,备用网页标记在两周内消失,索引里只剩一个版本。

提醒一点。canonical 写的是规范地址,不是入口地址,任何跳转都会让这个信号打折。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189