站点装了自动转 webp 的插件,转换后把原 jpg 删了,HTML 里 picture 标签的 fallback 仍指向 jpg,不支持 webp 的抓取器和旧浏览器全部拿到 404。
这类报错背后常见的原因有几处,逐个排除就行。插件开启删除原图选项,fallback 源没有同步改。还有一种是CDN 缓存里还在引用旧 jpg 地址,回源已不存在。
还有一种情况,图片 sitemap 里列的仍是 jpg 路径。
上来先抽查 picture 标签的两套源
curl -s https://www.example.com/post/1 | grep -o '<source[^>]*>\|<img[^>]*>' | head -5
随后关掉删除原图并回滚
wp option update ewww_image_optimizer_delete_originals 0
末了确认 fallback 可访问
curl -sI https://static.example.com/uploads/2026/09/a.jpg | head -2
中途换过一次思路,把范围缩到最小的那一层,反而快了。
中间停过一次,把已经改的东西回滚干净,再重新来一遍。
同样的操作我在测试机上先走了一遍,线上只做验证过的部分。
恢复的判定其实很直接。picture 里的 jpg 与 webp 两个地址都返回 200,图片 404 归零,图片 sitemap 里的条目全部可访问。
提醒一点。webp 是好东西,但 fallback 必须真实存在,删原图前先确认所有引用方都已经切换。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
