记录一下那天晚上的排查过程。站点迁移后 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 只放最终地址,任何跳转都会让条目失效,协议和域名要在生成阶段就统一。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。
