现场是这样的。手工维护的 sitemap 里 lastmod 写成了斜杠格式 2026/11/09,提交后只有部分 URL 被读取,其余像是不存在一样。
真正麻烦的地方在于,几个原因的现象几乎一样。lastmod 必须使用 W3C 日期格式,斜杠不被接受;解析失败的条目会被静默跳过,整个过程不报错;时区偏移写错也会被判为非法时间,整条失效。
动手时先检查日期字段的写法
grep -o '<lastmod>[^<]*' sitemap.xml | head
随后统一替换成标准格式
sed -i 's#2026/11/09#2026-11-09T08:00:00+08:00#g' sitemap.xml
剩下的就是用校验工具确认结构和日期
xmllint --noout sitemap.xml
这台环境是别人交接的,不少默认值被动过,只能一项项核。
同事提醒我看一下最近一次发布,时间点确实对得上。
别只看报错消失,验证要多做一步。读取到的 URL 数量与文件里的 loc 数量一致,不再有整条缺失,抓取记录也补齐了。
日期可以只写到天,但一旦带时间就必须写时区,省略时区在不同引擎上解释不同,容易前后矛盾。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。