报错是这么冒出来的。开了图片自动优化后,页面里的 img 地址被改写成带处理参数的路径,蜘蛛按原地址抓 a.jpg 时返回 404,因为源站只保留了优化后的对象。

中间走过弯路,把「CDN 回源规则没剥离处理参数,找不到对应对象」当成主因,改完现象没变。

排查方向其实有限,先把可能性排一排。源站图片迁到对象存储后把原图删了。也可能是改写只在前端做,sitemap 和 OG 标签仍是原地址。

还有一种情况,图片 sitemap 里写的是未优化的原始路径。

动手时先对比页面地址与原图地址

curl -s https://www.example.com/post/1 | grep -o 'src="[^"]*a.jpg[^"]*"'

然后确认原图是否还存在

curl -sI https://img.example.com/a.jpg | head -3

回源时剥离图片处理参数

location ~* \.(jpg|png)$ { rewrite ^(.*)$ /$1 break; }

等前面都确认过,再核对图片 sitemap 里的地址

curl -s https://www.example.com/image-sitemap.xml | grep -c 'x-oss-process'

恢复的判定其实很直接。原图地址返回 200,图片 sitemap 与页面地址一致,图片搜索抓取恢复且不再报 404。

图片优化参数要能随时回退到原图,源站删原图是最常见的翻车点,删除前先确认回源逻辑。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189