这个坑值得记一笔。地址超过五万条后,把两个索引文件又套进一个总索引,GSC 提示格式错误,只有第一个子索引被读取。
原因不止一个,得分开看。索引文件不允许再嵌套索引,只能指向地址集合;总索引里混入了另一个索引文件的地址;子文件的命名空间声明缺失。
先看总索引指向的文件类型
curl -s https://www.example.com/sitemap_index.xml | grep -o '<loc>[^<]*'
接着改成平铺指向分片
curl -s https://www.example.com/sitemap_index.xml | grep -c '<sitemap>'
校验子文件是地址集合
xmllint --noout https://www.example.com/sitemap-1.xml
剩下的就是确认命名空间
curl -s https://www.example.com/sitemap-1.xml | head -2
我习惯把每一步的执行时间和结果记在一边,后面复盘省事。
改之前我把相关日志按时间截了一段存着,事后对时间线用得上。
改完先别撤,确认这几项。总索引条目数与分片数一致,报告里各分片都显示已读取,已发现地址数等于实际总数。
分层整理看着清爽,但规范只允许一层,超过五万条就多切几个分片。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。
