这个坑值得记一笔。分类页分页没有上限,/list/page/999/ 照样返回 200 和空列表,蜘蛛从第一页一路抓到四位数。日志里这类空分页每天上千条,真实文章的抓取被挤掉。试过在 robots 挡 /page/,收录没降。

刚开始盯着「空列表页没有 noindex,被当成正常列表页」,折腾了半个多小时,排掉了。

排查方向其实有限,先把可能性排一排。分页参数不校验范围,超出总页数仍返回 200 空列表;每页都输出下一页链接,蜘蛛可以无限往后走;robots 只阻止抓取,已发现的地址仍占用调度。

上来先验证超范围页码的状态

curl -s -o /dev/null -w "%{http_code} %{size_download}\n" https://www.example.com/list/page/999/

超出总页数直接返回 404

if ($page > $total_pages) { return 404; }

空列表页加 noindex

add_action('wp_head', function(){ if (is_paged() && !have_posts()) { echo '<meta name="robots" content="noindex,follow">'; } });

等前面都确认过,再统计空分页的抓取量

grep -c '/page/[0-9]\{3,\}/' /var/log/nginx/access.log

改完先别撤,确认这几项。超范围页码返回 404 后,三位数页码的抓取一周内归零,列表前几页的抓取频次明显提高。

提醒一点。分页要有明确终点,只要还返回 200,蜘蛛就会一直试下去,空页面是最容易被忽略的预算黑洞。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189