问题出现得很突然,日志倒是留得挺全。图片统一加了 ?ver= 版本号防缓存,每次发版版本号变一次,GSC 里图片索引量忽高忽低,日志里同一张图被抓了十几个不同地址。
刚开始盯着「CDN 把带参数的请求当成独立对象,缓存全部落空」,折腾了半个多小时,排掉了。
这类报错背后常见的原因有几处,逐个排除就行。版本号拼在图片 URL 上,每次发版就生成一批新地址。还有一种是图片 sitemap 直接输出带参数的地址,等于主动提交新 URL。
不容易想到的是,页面 srcset 里每个尺寸都带参数,地址数量成倍放大。
先统计同一张图有多少种地址
grep -o '/uploads/[^" ]*' access.log | sort -u | wc -l
然后确认参数只影响缓存不影响内容
curl -sI https://www.example.com/uploads/a.jpg?ver=20261111
接着改成文件内容哈希命名并去掉参数
find wp-content/uploads -name '*.jpg' | head -5
图片 sitemap 只输出无参数地址
SELECT guid FROM wp_posts WHERE post_mime_type LIKE 'image/%';
改完先别撤,确认这几项。图片索引量稳定在一万二上下,日志里同一张图的请求地址从十几个收敛到一个,图片搜索点击开始回升。
提醒一点。防缓存应该靠文件名哈希,参数只适合临时调试,长期挂在图片地址上会把索引拆成很多份。这类问题最好一次改到位,反复小改反而容易把原因搅混。
