报错是这么冒出来的。商品列表支持 orderby=price、orderby=sales 加上 paged 组合,蜘蛛两小时抓了八千个变体地址,内容几乎一样,正文页当天只被抓了两百次。

这类报错背后常见的原因有几处,逐个排除就行。排序参数没有规范化,每个组合都是独立 URL。也可能是页面里的排序按钮输出的是可抓取的 a 标签。

另外,canonical 指向当前地址,没有回指默认排序。

动手时先统计带 orderby 的抓取量占比

awk '{print $7}' access.log | grep -c "orderby="

随后把 canonical 固定到默认排序

add_filter('wp_get_canonical_url', function($u){ return remove_query_arg(array('orderby','paged'), $u); });

robots 里挡掉排序参数

Disallow: /*?*orderby=

同一份数据我导出了两份,一份留底,一份拿来试。

这类问题以前遇到过,但这次的触发条件和上次不一样。

怎么算真的好了,看的是同一批现象。带 orderby 的请求在日志里占比降到 1% 以下,正文页日抓取量回到两千次,重复网页报表条目减少。

提醒一点。排序页对用户有用,对蜘蛛只有害,保留功能的同时把入口改成不可抓取的按钮即可。报错文案容易误导,真正的原因往往在相邻那一层的日志里。

作者 9823189