栏目一多、内容一多,列表页就会自然出现翻页。分页本身不是问题,问题是很多站点的分页只考虑了“人点着方便”,没有考虑“蜘蛛怎么爬、怎么判断这些页面”。结果就是:翻页地址要么被当成一批高度相似的内容,要么干脆断在某一页,后面的内容蜘蛛再也够不到。
先搞清楚你的分页长什么样
不同建站程序的分页形式差别很大,常见的有几种:
- 查询参数型:/category/news?page=2,有时还叠加排序或筛选参数。
- 路径型:/category/news/page/2/,URL 看起来像独立目录。
- 按钮加载型:页面上是“加载更多”按钮,实际用 JavaScript 拼接内容。
- 无限滚动:一直往下滑,地址栏可能只变化一小段,甚至不变。
这些形式各有优缺点,但自查时都要回答同一个问题:翻到第二页之后,页面地址是否真实存在、能否被独立打开、能否被正常链接到。
状态码与可达性抽查
随机挑几个栏目,手动翻到第二页、中间某一页和最后一页,逐项确认:
- 页面返回的是正常的 200,而不是跳回首页或直接报 404。
- 超出实际页码的地址,比如只有 8 页却访问 page=99,有明确处理:要么返回 404,要么跳回第一页,尽量不要给一个空白列表还返回 200。
- 分页区的“上一页/下一页/页码”是真实可点的链接,而不是只能靠 JavaScript 事件触发的 span。
- 用鼠标中键或复制链接新开窗口,能打开对应分页,而不是打开空白页或首页。
如果分页链接必须经过点击脚本才能生成,蜘蛛很可能只看到第一页。可以考虑在服务端输出一份基础分页链接,脚本再在此基础上做体验优化。
canonical 别全指回第一页
这是分页里最常见、也最容易踩的一个坑:有些模板为了“避免重复内容”,把第二页之后的 canonical 全部指向列表第一页。这样做等于告诉搜索引擎“这些页面的正式版本只有第一页”,后面的内容虽然还在,但被发现和被当作独立入口的机会就被压低了。
更稳妥的做法通常是让每个分页地址自引用 canonical,即第二页指向第二页自己。同时确保第一页、第二页的标题、描述和列表内容确实有区别,而不是只有页码数字不同。
标题、描述与内容重复度
- 分页标题可以带页码,但不要所有页都完全一样。
- 描述如果由程序自动截取,注意别把第一页的摘要原样复制到每一页。
- 列表项本身不同,但页面框架、侧栏、推荐位如果高度一致,属于正常现象,不必过度处理,重点还是让每一页有可区分的列表内容。
- 如果某一页列表为空,考虑不要让它进入索引。
抓取深度与入口
分页越深,蜘蛛到达的成本越高。可以自查几点:
- 每页展示条数是否合理。条数太少会把内容摊到很多页,条数太多又会让单页体积变大。
- 深层分页有没有其他入口,比如分类的年份归档、标签聚合、相关推荐。入口多了,不一定要靠一页页翻到底。
- 如果重要内容只出现在很深的页码里,考虑调整栏目结构或增加直接入口。
加载更多与无限滚动的兜底
对访客来说,按钮加载和无限滚动很顺;对蜘蛛来说,如果 URL 不变化、链接不存在,这些内容可能等于不存在。建议至少保留一套可访问的分页 URL 作为兜底,让加载更多只作为前端的增强体验。
一次十分钟的自查清单
- 选三个有代表性的栏目,各翻到第 2 页、中间页、最后一页。
- 看状态码、canonical、标题是否正常。
- 复制分页链接新开窗口,确认能独立打开。
- 查看页面源代码,确认分页链接是 a 标签而不是纯脚本。
- 检查超出页码的地址如何处理。
- 如果站点有日志,看看分页地址是否被蜘蛛访问过,访问到第几页。
分页不需要做得多花哨,关键是把翻页地址做到可访问、可区分、可继续往下走。把这几件事确认清楚,列表页就不会变成一批被忽略的重复地址。