主题的缩略图走 on-the-fly 裁剪,任何 ?w= 数值都能生成一张图,蜘蛛顺着 srcset 和各种尺寸试出了十万条地址,图片目录的抓取量暴涨二十倍。
排查方向其实有限,先把可能性排一排。裁剪接口没有白名单,宽度参数任意值都返回 200。另一种情况是页面里输出的 srcset 尺寸与实际用到的对不上。
不容易想到的是,没有对图片地址做 canonical 或 robots 约束。
动手时先验证任意参数是否都返回 200
curl -sI "https://www.example.com/wp-content/uploads/a.jpg?w=997" | head -2
只允许预设尺寸生成
$allowed = array(150, 300, 768, 1200); if (!in_array((int)$_GET['w'], $allowed, true)) { status_header(404); exit; }
robots 里挡掉带裁剪参数的图片地址
Disallow: /*?w=
这次没动代码,只在配置和运行环境上找原因。
隔了一天再看,现象没变,说明不是偶发。
恢复的判定其实很直接。任意非法宽度的请求返回 404,日志里图片抓取量回落八成,srcset 输出的尺寸都在白名单内。
提醒一点。动态裁剪方便但有无限地址风险,白名单是最省事的收口方式,别指望蜘蛛自己克制。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
