问题出现得很突然,日志倒是留得挺全。活动页把 eventStatus 写成已取消,本意是下线活动。富媒体报告没有报错,搜索结果里活动仍在展示,日期过了两个月还挂着报名入口,客服收到十几条投诉。

刚开始盯着「endDate 没有更新,机器判成未来活动」,折腾了半个多小时,排掉了。

这类报错背后常见的原因有几处,逐个排除就行。eventStatus 必须用 schema.org 的 EventCancelled 这类枚举 URL。少数情况下是活动页没有同步下架,页面本身仍返回 200。

不容易想到的是,sitemap 里还保留着这些过期活动地址。

第一件事是看标记里的状态值

curl -s https://www.example.com/event/88 | grep -o '"eventStatus":"[^"]*"'

再往下改成标准枚举

"eventStatus":"https://schema.org/EventCancelled"

已结束的活动统一 410 或跳转

curl -sI https://www.example.com/event/88 | head -1

从 sitemap 移除过期活动

grep -c '/event/' sitemap.xml

怎么算真的好了,看的是同一批现象。状态被识别为已取消,过期活动从富媒体里消失,页面返回 410 或跳到新活动页。

补一句。eventStatus 是枚举字段,中文描述不会被解析,取消活动必须同时改标记和页面状态。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。

作者 9823189