这个坑值得记一笔。多语言站的 sitemap 索引里只引用了中文分片,英文和日文的分片文件生成了,但索引里没有任何链接。GSC 里提交记录只有一份中文,英文页一个月只被抓了十几条。
刚开始盯着「语言分片没有单独的 lastmod,蜘蛛无法判断更新节奏」,折腾了半个多小时,排掉了。
排查方向其实有限,先把可能性排一排。索引文件里写死了三个中文分片的地址,新增语言时没有更新;各语言分片的生成任务排在主站后面,经常超时被跳过;提交时只交了主索引,没人核对分片是否齐全。
上来先抓索引文件,看实际引用了几个分片
curl -s https://www.example.com/sitemap_index.xml | grep -o '<loc>[^<]*'
接着确认各语言分片文件是否存在且可访问
for l in zh en ja; do curl -s -o /dev/null -w "$l %{http_code}\n" https://www.example.com/sitemap-$l.xml; done
随后把索引改成按语言目录动态生成,避免漏项
grep -rn 'sitemap_index' tools/ | head
补全后重新提交索引并核对数量
curl -s https://www.example.com/sitemap_index.xml | grep -c '<loc>'
改完先别撤,确认这几项。索引里出现全部语言分片,一个月后英文页的抓取量从十几条涨到上千条。
这里还有个坑。多语言站的 sitemap 最怕只维护主语言,新增语言时把索引文件当成需要同步改的清单,而不是自动产物。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。
