记录一下那天晚上的排查过程。站点迁移后 sitemap 保留了一批 http 地址,这些地址全部 302 跳到 https 版本,Search Console 提交后提示部分 URL 无法读取,索引里这批页面一条都没增加。

刚开始盯着「跳转链上还带了一次 www 的补充跳转,等于两跳」,折腾了半个多小时,排掉了。

原因不止一个,得分开看。sitemap 规范要求条目返回 200,302 会被判定为无效地址。也可能是生成脚本读的是数据库里的旧字段,没有跟随站点协议变更。

少数情况下是CDN 对 http 地址返回 301,源站配置里却写着 302。

第一件事是抽查 sitemap 条目的实际状态码

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

接着统计 sitemap 里 http 开头的条目数

curl -s https://www.example.com/sitemap.xml | findstr /c:"http://" | measure -Line

再往下把生成逻辑改成输出规范地址

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

末了重新生成并提交索引

curl -s "https://www.google.com/ping?sitemap=https://www.example.com/sitemap_index.xml"

怎么算真的好了,看的是同一批现象。sitemap 里 http 条目清零后重新提交,两周内这批页面陆续被抓取,索引量与迁移前的数字对齐。

这里还有个坑。sitemap 只放最终地址,任何跳转都会让条目失效,协议和域名要在生成阶段就统一。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189