现场是这样的。Article 的 image 写成 ["", "https://www.example.com/cover.jpg"],数组里混了空字符串,富媒体提示 image 字段无效,整段 Article 标记被丢弃。

中间走过弯路,把「图片地址是相对路径,同样判无效」当成主因,改完现象没变。

原因不止一个,得分开看。数组里的空字符串被判为无效值,整段标记作废;模板在无特色图时输出了空占位;数组第一项优先,空值直接覆盖后面的有效图。

第一件事是看 image 的实际内容

curl -s https://www.example.com/post-1/ | Select-String image

过滤空值后再输出

$imgs = array_values(array_filter($imgs));

接着确认数组里只剩有效绝对地址

curl -s https://www.example.com/post-1/ | Select-String cover.jpg

复核 Article 富媒体

curl -s "https://search.google.com/test/rich-results?url=https://www.example.com/post-1/" -o /dev/null -w "%{http_code}"

当时还开着另一个排查窗口,两边日志对照着看才定位到。

同一份数据我导出了两份,一份留底,一份拿来试。

这类问题以前遇到过,但这次的触发条件和上次不一样。

恢复的判定其实很直接。image 数组里全部是 https 开头的有效地址,Article 富媒体测试通过。

空字符串比缺字段更糟,缺字段只是可选,空值会让整段标记失效。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。

作者 9823189