问题出现得很突然,日志倒是留得挺全。站点去年切了 HTTPS,Nginx 里 http 全部 301 到 https。sitemap 由插件生成,siteurl 还是 http,提交的 4 万条地址全是 http 版本。百度抓取统计里 sitemap 的成功率只有 60%,其余都停在跳转上。

刚开始盯着「CDN 在边缘做 301,蜘蛛每次多一跳」,折腾了半个多小时,排掉了。

排查方向其实有限,先把可能性排一排。WordPress 的 siteurl 没改,生成链接仍是 http。还有一种是sitemap 缓存没有重建,输出的是旧文件。

少数情况下是canonical 在 http 和 https 之间摇摆。

先看 sitemap 里地址的协议

curl -s https://www.example.com/sitemap.xml | grep -o '<loc>http[^<]*' | head -5

再往下确认站点地址配置

wp option get siteurl && wp option get home

随后改成 https 并重建 sitemap

wp option update siteurl https://www.example.com && wp option update home https://www.example.com

等前面都确认过,再统计 http 地址的占比

curl -s https://www.example.com/sitemap.xml | grep -c '<loc>http://'

命令输出我都留了记录,免得改完记不清原来的值。

怎么算真的好了,看的是同一批现象。sitemap 里全部是 https 地址,抓取成功率回到 95% 以上,跳转链路从两次降到一次。

这里还有个坑。换协议时最容易漏的是 sitemap 和 canonical,数据库里的绝对地址也要一起替换。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。

作者 9823189