站点有颜色和尺码两重筛选,组合出四万多条地址。robots 里加了 Clean-param: color&size /product/ 想让百度忽略这两个参数,日志里参数页的抓取量一个月没降,抓取频次还被判成低质。文件编码是 UTF-8 无 BOM,路径也和线上目录一致。

原因不止一个,得分开看。Clean-param 必须写在对应 User-agent 分组的末尾 写进通配组不生效;参数名与线上实际的 arg_color 大小写不一致 匹配被跳过;规则里的路径结尾少了斜杠 与 /product/list 这类地址对不上;服务端把参数页渲染成了独立内容 百度即便忽略参数也看到不同页面。

动手时先用百度蜘蛛 UA 取回 robots 看真实内容

curl -s -A 'Baiduspider' https://www.example.com/robots.txt | grep -n Clean-param

再往下核对线上参数名的实际写法

grep -o 'arg_[a-z_]*' /etc/nginx/conf.d/site.conf | sort -u

接着把参数页统一 301 到无参数地址

if ($args ~ 'color=|size=') { return 301 $uri; }

等前面都确认过,再按天对比参数页抓取量

grep 'color=' access.log | grep -c Baiduspider

别只看报错消失,验证要多做一步。改完十天左右百度对参数页的抓取降到原来的一成,抓取频次等级回到三档,无参数的商品页收录数量开始往上走。

提醒一点。Clean-param 只是告诉蜘蛛可以忽略参数,页面上如果确实渲染了不同内容,它还是会按独立页面处理。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。

作者 9823189