这类问题我又碰上了一次。商品列表总共六千条,每页 20 条实际只有 300 页,前端分页组件却按总数算出 500 页,第 301 页之后全是空列表但返回 200,GSC 里多了两百条空白页。

第一反应是「分页链接由组件按总页数生成,蜘蛛全抓了一遍」,验证下来不成立。

把日志和配置对完,能解释这个现象的基本就这几处。分页总数用的是筛选前的计数,与实际结果不一致;页码越界时后端返回空数组而不是 404;空列表页仍输出列表模板和 title,被判成薄内容。

上来先确认越界页返回的状态码

curl -sI 'https://www.example.com/list?page=301' | head -3

再往下核对真实总数与前端分页数

curl -s 'https://www.example.com/api/list?page=1' | grep -o '"total":[0-9]*'

越界直接返回 404

if ($offset >= $total) { http_response_code(404); exit; }

末了检查分页组件的最大页数计算

grep -rn 'totalPages' static/js/list.js

改完先别撤,确认这几项。越界页返回 404,分页组件的最大页码与实际一致,GSC 里空白列表页逐步消失。

补一句。空列表返回 200 是最常见的薄内容来源,分页越界和筛选无结果都要单独给 404。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189