先把当时的情况摆出来。站点改版把 sitemap.xml 301 到 sitemap_index.xml,GSC 提交后一直显示待处理,抓取工具显示重定向,索引文件里的子项一条都没被读取。

原因不止一个,得分开看。sitemap 地址不依赖跳转,蜘蛛不会跟随 301 去读内容。也可能是旧地址同时在 robots 和 GSC 里登记过。

另外,跳转目标带参数,解析器判定地址与提交值不一致。少数情况下是CDN 缓存了 301,改回 200 也不立即生效。

先确认返回码和跳转目标

curl -sI https://www.example.com/sitemap.xml | Select-String "HTTP/|Location"

旧地址直接返回新内容而不是跳转

location = /sitemap.xml { alias /var/www/site/sitemap_index.xml; }

随后清掉 301 的缓存

curl -X PURGE https://www.example.com/sitemap.xml

等前面都确认过,再重新提交新地址

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

白天有业务在跑,能验证的部分都压到了晚上做。

当时还开着另一个排查窗口,两边日志对照着看才定位到。

别只看报错消失,验证要多做一步。旧地址直接返回 200 且内容是索引文件,GSC 状态从待处理变成成功。

补一句。sitemap 最好一次把地址定好,靠 301 过渡最容易长期卡在待处理。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。

作者 9823189