问题出现得很突然,日志倒是留得挺全。活动页把 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 是枚举字段,中文描述不会被解析,取消活动必须同时改标记和页面状态。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。
