先把当时的情况摆出来。运营把两百篇文章的封面换成了新图,文件名和地址都没变,图片 sitemap 里的 lastmod 还是三年前的上传时间,蜘蛛一次都没回来重抓。
这类报错背后常见的原因有几处,逐个排除就行。lastmod 取的是附件上传时间,不随文件替换更新。另一种情况是图片地址没变,蜘蛛没有其他更新信号。
还有一种情况,CDN 缓存了旧图,回源也拿到旧版本。
上来先核对 sitemap 里的图片时间
curl -s https://www.example.com/image-sitemap.xml | grep -A2 'cover-1024'
接着改用文件修改时间输出 lastmod
echo date('c', filemtime($file));
刷新被替换图片的 CDN 缓存
curl -X PURGE https://www.example.com/uploads/2023/cover-1024.jpg
复检页面上图片的 ETag
curl -sI https://www.example.com/uploads/2023/cover-1024.jpg | grep -i etag
我习惯把每一步的执行时间和结果记在一边,后面复盘省事。
别只看报错消失,验证要多做一步。更新 lastmod 并刷缓存后,一周内这批封面重新被抓,图片搜索里的缩略图换成了新版本。
同名覆盖图片一定要让修改时间或 ETag 变化,否则在蜘蛛看来这张图从来没动过。报错文案容易误导,真正的原因往往在相邻那一层的日志里。
