先看现象。详情页顶部输出「更新时间:2026-11-14」,description 里也带上了这句,搜索结果显示的日期却是 1970-01-01,点进去内容明明是最新的。
排查方向其实有限,先把可能性排一排。描述里的日期格式被解析成时间戳,缺省值落到零。另一种情况是结构化数据 dateModified 用了本地格式而不是 ISO 8601。
不容易想到的是,页面同时存在两个日期字段,蜘蛛取到了空的那个。
还有一种情况,模板输出的日期在时区转换时溢出。
第一件事是查看页面里所有日期字段的原始值
curl -s https://www.example.com/post/1024 | grep -oE '20[0-9]{2}-[0-9]{2}-[0-9]{2}' | sort -u
随后把 dateModified 统一成 ISO 8601 带时区
echo '"dateModified":"2026-11-14T09:30:00+08:00"'
description 里去掉具体日期只留「近期更新」
grep -n '更新时间' templates/post.php
末了确认空日期不再输出默认值
curl -s https://www.example.com/post/1024 | grep -c '1970'
怎么算真的好了,看的是同一批现象。页面日期字段统一为带时区的 ISO 格式,搜索结果展示的日期与正文一致,1970 不再出现。
日期缺失时的零值特别容易被索引成 1970,任何输出日期的模板都要做空值判断。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。
