列表页分页看起来是最不起眼的一环:上一页、下一页、页码,做出来就能用。但当某个栏目积累到几千条内容、每页只放十篇时,分页就变成了一个需要单独打理的模块。翻页链接少写一个参数,可能让蜘蛛在几百个几乎相同的页面之间来回跑;页码算错一位,访客想找半年前的文章会翻到失去耐心。
先确认分页的真实 URL 形态
不同建站程序的翻页地址差别很大,常见的有/list/2.html、/list?page=2、/list/page/2 以及带一堆附加参数的写法。自查第一步是把第一页到第五页的地址逐个复制出来,去掉参数对比,看看变化的是哪一段。如果发现除了页码,还混进了排序方式、时间戳、会话 ID 之类的东西,那就要先想办法把多余参数清理掉,否则翻页会派生出大量内容相同的地址。
分页自查清单
- 越界页码:手动访问第 9999 页,看返回的是空列表、空白页还是报错信息。理想情况是返回一个明确的状态码,而不是照常显示“暂无内容”的 200 页面。
- 页码上限:列表页是否在文章只有 30 篇时也能翻到第 500 页。如果能,说明页数没有按实际内容量计算。
- 翻页链路完整:每个页码是否都是普通链接,能被直接打开;不要只依赖点击后触发的脚本加载。
- 首尾页处理:第一页是否需要写成 /list/1.html,还是直接指向栏目首页,两种写法最好只保留一种,避免同一页出现两个地址。
- 排序稳定性:同一页在两次刷新之间,内容顺序是否一致。如果按发布时间排序且存在大量同一时间发布的内容,顺序会漂移,翻页时容易漏掉或重复看到某几篇。
- 筛选后的分页:带条件的列表是否重新计算页数,而不是沿用全量列表的页数。
- 旧内容可达:最深处的那一页是否还能通过连续点击到达,中间有没有断链。
分页与蜘蛛抓取的关系
蜘蛛顺着翻页一路往下走,本身是发现旧内容的正常途径。问题出在没有边界的翻页:当页数可以无限增长、每页又都挂着完整的翻页条时,抓取资源会被消耗在大量结构相似的页面上,真正需要更新的详情页反而排到了后面。比较稳妥的做法是让翻页尽量呈现“少而准”的路径,而不是把几百个页码全部铺在页面上。
分页本身不是问题,无边界的分页才是。判断标准很简单:这些页面里有没有访客真正想看的独立内容。
页码展示与可用性小细节
- 页码条不要一次性输出几百个链接,超过一定数量后折叠,只保留首尾和当前页附近。
- “上一页”和“下一页”在首尾页应正确变灰或消失,不要仍然可点但跳回原页。
- 翻页后页面标题中的页码要跟着更新,避免每一页都是同一个标题。
- 翻到第 N 页后,滚动位置应回到列表顶部,而不是停在页面底部。
- 移动端的翻页按钮要留出足够的点击区域,别让手指点中旁边的链接。
把它放进定期复查里
分页的问题往往不是一次改完就一劳永逸。栏目扩容、模板改版、排序规则调整,都可能让原本正常的翻页出问题。建议每隔一段时间挑一个内容最多的栏目,从第一页手动翻到最后一页,记录哪一页开始出现重复、空白或顺序错乱,再回头对照上面的清单逐条核对。这件事花不了多久,但能省下不少排查“为什么这篇老文章一直没被抓到”的时间。