现场是这样的。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 富媒体测试通过。
空字符串比缺字段更糟,缺字段只是可选,空值会让整段标记失效。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。
