WooCommerce 站被收录九万条 ?add-to-cart=123 地址,这些页面都 302 跳到购物车,内容完全一样,重复网页占比到了四成。试过在 robots 里加 Disallow,收录量没降。
真正麻烦的地方在于,几个原因的现象几乎一样。主题的加入购物车按钮用 GET 链接,蜘蛛顺着列表页一路抓走;这些地址返回 302 到 /cart/,被归进备用网页而不是丢弃;canonical 指回商品页与 robots 屏蔽同时存在,两个信号互相冲突;商品数量大,每次上架都会产生一批新的参数组合。
上来先看一条地址跳去哪
curl -sI "https://shop.example.com/?add-to-cart=123" | grep -i location
再往下把加购改成表单提交不走 GET
add_filter('woocommerce_product_add_to_cart_url', '__return_false');
接着在 robots 里收口这个参数
printf 'Disallow: /*?add-to-cart=\n' >> /var/www/html/robots.txt
等前面都确认过,再统计日志里的请求占比
grep -c "add-to-cart" /var/log/nginx/access.log
改完先别撤,确认这几项。一周后日志里这类请求从每天八千次降到两百次以内,重复网页占比回落到五个点以下,商品页本身的收录没有减少。
补一句。只加 Disallow 不会删除已经收录的地址,得配合网址移除或等 302 被重新判定,两条路可以一起走。报错文案容易误导,真正的原因往往在相邻那一层的日志里。
