先把当时的情况摆出来。商品下架后图片文件被删,Nginx 统一 302 到一张占位图,蜘蛛跟随跳转拿到 200,图片搜索里全是同一张灰图,持续了三个月。
原因不止一个,得分开看。占位图跳转让失效图片看起来仍然有效。另一种情况是图片 sitemap 里仍保留已删除的地址。
不容易想到的是,没有区分下架和下架后重新上架的图片。
先确认失效图片的最终状态
curl -sL -o /dev/null -w '%{http_code} %{url_effective}\n' https://www.example.com/uploads/2023/a.jpg
然后让失效图片直接返回 404
location ~* ^/uploads/2023/ { try_files $uri =404; }
接着清理图片 sitemap 里的失效条目
curl -s https://www.example.com/image-sitemap.xml | grep -c 'uploads/2023'
复检图片搜索的收录
site:www.example.com/uploads/2023/
当时还开着另一个排查窗口,两边日志对照着看才定位到。
怎么算真的好了,看的是同一批现象。改成直接 404 后,占位图逐步退出图片索引,图片搜索的点击回到正常商品图上。
提醒一点。占位图能保住用户体验,但对搜索引擎要返回真实状态,跳转会把失效信号藏起来。这类问题最好一次改到位,反复小改反而容易把原因搅混。
