列表页和分页看起来只是翻页功能,对蜘蛛却是一个不断向外扩散的入口。一篇文章只有一个网址,而一个列表页可能带出几十个分页地址,每个分页又各自带出更多链接。这部分没设计好,站点很容易出现三类问题:分页地址无限增长、同一批内容对应多个网址、蜘蛛把时间花在翻到很后面的页面上。
分页常见的几个问题
- 翻页参数没有上限,page 后面跟到几千也没人管;
- 筛选项、排序方式、时间范围与分页参数自由组合,生成大量内容几乎相同的页面;
- 每个分页的 title 和 description 完全一样,用户和蜘蛛都看不出区别;
- 列表里只有摘要甚至只有图片,点进去的正文反而被稀释;
- 移动端用加载更多按钮,蜘蛛根本点不出后面几页。
先把分页地址收敛住
能用路径就别堆参数
技术条件允许时,分页写成 /list/2/ 这类可读路径,比带一串参数的地址更清楚,后续做规范化也省事。参数越少,处理重复内容时越不容易出错。
参数分页要设边界
排序和筛选属于交互功能,可以保留参数,但要限制能被抓取的组合数量。比如只让按时间、按热度两种排序进入索引,其余组合要么加 noindex,要么在 robots 里屏蔽。否则一年下来,光是筛选组合就能堆出上万条地址。
给翻页深度设上限
翻到第五十页,对用户和蜘蛛都没什么意义。后台可以直接设定一个上限,超过上限的请求返回 404 或跳回列表第一页,避免参数被人为拼接到任意数值。
分页上的标记怎么写
- canonical 指向分页自身,不要全部指向列表首页;
- rel next 和 prev 早已不是收录依据,但保留清晰的翻页链接仍然有价值;
- title 里可以带上第 N 页,但别为了差异化硬塞关键词;
- 列表摘要保留文章开头的真实内容,不要用统一模板套话。
翻页深度与抓取预算
每个分页都会带出新的链接,列表每页放多少条、能翻多少页,直接影响蜘蛛在站内的行走路线。建议把每页条数控制在二十到五十条之间,把最新、最重要的内容放在靠前的分页,旧内容自然下沉。如果某个栏目内容量很大,可以用分类或时间归档把它拆成多个入口,而不是让蜘蛛沿着一条分页链一直往后翻。
自查步骤
- 打开一个列表页,把所有翻页链接依次点开,观察地址如何变化,有没有出现多层参数叠加;
- 确认同一篇文章是否能通过多个分页地址进入,重复的部分是否做了处理;
- 在站长平台或日志里看分页地址的抓取频率,是否明显高于内容页;
- 检查加载更多和无限滚动,确认不依赖点击也能拿到后续内容;
- 核对分页的标题、描述和 canonical 是否符合预期。
无限滚动与 JS 分页
无限滚动体验不错,但纯前端实现往往只在用户滚动时才请求数据,蜘蛛看到的可能始终是第一批内容。常见的做法是给无限滚动配一套可访问的分页地址,滚动加载的同时把翻页链接保留在页面里,让两种方式指向同一批内容。
分页不是功能细节,它决定了蜘蛛从一个入口能走到多远。把地址收敛、标记写清、深度控制住,列表页才不会变成抓取的无底洞。