这个坑值得记一笔。生成器把 lastmod 写成 1762300000000 这样的毫秒时间戳,GSC 提示日期格式无效,整份 sitemap 被拒,改成秒级依然不行。
刚开始盯着「部分生成器输出的带时区 ISO 串格式不标准」,折腾了半个多小时,排掉了。
排查方向其实有限,先把可能性排一排。lastmod 必须是 W3C 日期格式,纯数字时间戳不被接受;毫秒时间戳多出三位,解析器直接判错;日期为空时输出了 0,同样被判无效。
动手时先看 sitemap 里的日期样例
curl -s https://www.example.com/sitemap.xml | Select-String lastmod | Select-Object -First 3
接着改成标准 ISO 8601 格式
echo gmdate('c', intdiv($ts, 1000));
批量检查非法日期
curl -s https://www.example.com/sitemap.xml | Select-String -NotMatch "lastmod>[0-9]{4}-[0-9]{2}-[0-9]{2}"
等前面都确认过,再重新提交观察状态
curl -s "https://www.google.com/ping?sitemap=https://www.example.com/sitemap.xml"
改之前我把相关日志按时间截了一段存着,事后对时间线用得上。
中途换过一次思路,把范围缩到最小的那一层,反而快了。
怎么算真的好了,看的是同一批现象。sitemap 里所有 lastmod 都是 2026-11-13T08:00:00+00:00 这类格式,GSC 不再报格式错误。
这里还有个坑。时间戳、斜杠日期、带毫秒的 ISO 串都不行,统一用 gmdate('c') 输出最稳。报错文案容易误导,真正的原因往往在相邻那一层的日志里。
