站点运营

站点运营:分页与加载更多自查,别让第二页之后的内容失去入口

列表页翻页常被当成小事,但它直接决定第二页之后的内容有没有被访问的机会。本文从翻页链接形式、URL 参数统一、加载更多的兜底入口、空尾页处理几个角度,整理一份可以直接照做的分页自查清单,帮你在不改版的前提下把这块基础打牢。

站点运营

站点运营:分页与加载更多自查,别让第二页之后的内容失去入口

做站点运营,列表页和栏目页常常是最容易被搁置的部分。首页和详情页有人盯着,翻页那块却往往只求“能点就行”。时间一长问题就出来了:第一页的内容蜘蛛常来,第二页往后的文章可能几个月都没有新的访问记录。

分页常见的问题长什么样

  • 翻页按钮绑在 JavaScript 事件上,没有真实的 href,蜘蛛顺不下去;
  • “加载更多”通过接口把后续内容拼进页面,HTML 源码里找不到任何链接;
  • 翻页参数一会儿 ?page=2,一会儿 ?p=2,一会儿 ?start=20,同一批内容对应好几套地址;
  • 翻到很后面全是空列表,页面依旧返回 200;
  • 排序、筛选参数被放开抓取,和翻页组合出大量低质量页面。

先让翻页链接“看得见”

最基础的一条:每一页的上一页、下一页、页码,都应该是标准的 a 标签,带真实的 href,而不是靠 onclick 或者 href="javascript:;" 来跳转。链接能被鼠标中键新开窗口,能被复制,能被蜘蛛顺着走,这三件事其实是同一件事。

rel="next" 和 rel="prev" 现在已经不是主流搜索引擎的索引信号,删掉不影响什么,留着也不算错。真正要紧的是链接本身可爬、可解析,而不是这对标签写没写。

“加载更多”和无限滚动怎么办

无限滚动对访客体验不错,对抓取却很不友好。比较稳妥的做法是:保留一套传统的分页地址,比如 /news/?page=3,点“加载更多”的同时用 history.pushState 更新地址栏,让这一页有独立可访问的地址;用户直接粘这个地址打开时,也能看到对应内容。这样既不打断交互,也不至于把所有后续内容锁死在接口里。

如果实在不想维护两套,至少保证首屏之后有一段“查看第 N 页”的普通链接,作为兜底入口。

URL 参数尽量收敛

同一套分页只保留一种参数写法,并且全站统一。排序参数、筛选参数如果对访客价值不大,可以在 robots.txt 中限制抓取,或者用 canonical 指回主列表页,避免和分页叠加出成百上千个近似页面。

一份可以照着做的分页自查清单

  1. 随机打开三个栏目,检查第二页、第三页的翻页链接是否为真实 a 标签,href 是否能直接访问;
  2. 确认分页参数写法全站一致,没有历史遗留的多套规则;
  3. 检查“加载更多”是否有对应的静态可访问地址;
  4. 翻到最后一页之后的一页,确认是 404 或者跳回第一页,而不是一片空白加 200 状态码;
  5. 翻一下服务器日志或抓取日志,看第二页以后的地址多久被访问过一次;
  6. 确认筛选、排序参数没有和分页一起放开,形成大量重复页面。

空尾页和“死循环”特别容易被忽略

很多 CMS 在页码超出范围时会返回一个空列表,状态码却是 200,标题和第一页一模一样。这类页面一旦被大量抓取,既浪费抓取预算,也容易让搜索引擎对列表页的质量产生误判。能返回 404 就返回 404,做不到就做一个明确的“没有更多内容”提示,并给出返回第一页的链接。

分页本身不是内容页,但它决定了内容页有没有被看到的机会。翻页做不好,后面写的文章就真的只是躺着。

小结

分页自查不需要改版,也不用动模板结构,多数时候只是把链接改回普通 a 标签、把参数统一、给“加载更多”补一个可访问的地址。做完这几件事,再回头看日志,第二页之后的地址出现的频率往往会不太一样。