分页优化:别让它毁了你网站的流量
分页,这玩意儿简直就是SEO界的老赖——你知道它不怀好意,但你又甩不掉它。几年前我有个电商站,商品列表分了30多页,结果你猜怎么着?谷歌只收录了前5页,后面的全成孤儿页面了。流量损失得肉疼。分页处理不好,直接让网站权重漏得跟筛子似的。https://obgeo.oss-cn-beijing.aliyuncs.com/pvc-articles/74042c6f-e81f-4779-b4f2-52483effc727.jpg
电商网站分页导致流量流失示意图
我当时那个懊恼啊——破口大骂搜索引擎的爬虫是不是眼神不好,但冷静下来还是得找辙。其实这十几年,分页优化的核心矛盾从来没变过:内容要割裂,权重得集中,用户体验还不能崩。 三者搅在一起,就跟麻绳似的,难解。
Google 那套 rel=prev/next 怎么就不玩了?
https://obgeo.oss-cn-beijing.aliyuncs.com/pvc-articles/da523bc7-72fb-41ce-bfb9-b35bae5fe17a.jpg
Google 那套 rel=prev/next 怎么就不玩了?
说到分页,老SEOER肯定忘不了 rel=prev 和 rel=next。2011年 Google 推出这标签,信誓旦旦说能帮爬虫理解分页序列,把信号集中到第一页。结果到了 2019 年,Google 自己打脸——宣布不再支持这玩意儿。为啥?Ilya Grigorik 在一次推特上轻飘飘地说:“爬虫其实早就不怎么看了。” 好家伙,我们一群人辛辛苦苦给全站加了标签,你一句轻飘飘就完了?那感觉,像极了舔狗最后一无所有。
但且慢!Bing 明确表示还认这标签。如果你的流量有一部分来自 Bing,该加还是加,别浪费。 不过别指望它当救命稻草。真正要命的是——现在 Google 把分页内容当“重复资源”的概率太高了。 分页里标题重复、H1重复、侧边栏和footer一模一样,谷歌一看:这特么不是一组重复页面吗?然后只挑一页进索引,其他全丢进补充材料,或者直接无视。权重就这样散落一地。
View-All 页面:一页定乾坤?想得美
有人会说,那好办,做个“查看全部”页,把所有内容放一页,然后 canonical 指过来,完美!理想很丰满,现实能把人噎死。 我一个做资讯站的朋友就这么干的,把一个频道的300条新闻扔到一个 view-all 页,结果加载速度从1.2秒飙到7秒,用户直接跳出,谷歌 Core Web Vitals 直接亮红灯。得不偿失。
View-all 只适合内容量可控、访问频次低的场景。比如说,一个产品系列的规格对比,总共就二三十项,一页展示完当然好。但如果是个每天更新的问答列表,动不动上千条——你敢 view-all,服务器就敢死给你看。别把技术方案当万能药,得先想想业务承不承受得住。
https://obgeo.oss-cn-beijing.aliyuncs.com/pvc-articles/27bfc4ab-a310-4f1a-9585-8e98ec118474.jpg
网站分页View-All页面速度崩塌GIF动图
还有更坑的:view-all 页如果内容过多,谷歌可能只爬取一部分——它有个“渲染预算”,超过一定量就不渲染了,后面的链接和内容直接白给。你辛辛苦苦做的内部链接,全打了水漂。
无限滚动和加载更多?SEO 照样头疼
现代前端框架搞无限滚动特别简单,用户爽翻,粘性高。但SEO呢?JavaScript动态加载的内容,谷歌不是说爬不到,是爬得贼别扭。 谷歌渲染JS需要额外资源,延迟可能长达几天。这期间你的新内容根本进不了索引。而且分批加载的URL状态往往用 hash 或 pushState 改变,爬虫很难发现链接,导致内容发现率一落千丈。
我的建议?永远给无限滚动配一套静态的分页链接。 也就是在页面底部,悄悄放上传统的 ?page=2、?page=3 的 <a> 标签,用 CSS 藏起来或者搞成对用户可见的备用翻页。这样爬虫来了能顺着链接摸到所有分页,用户也能在关键时候用(比如网络不好的时候)。这叫双轨制,给自己留条后路。
再说“加载更多”按钮,那其实就是一个伪装的异步加载链接。得确保按钮是个真正的 <a href='/page/2/'>,而不是 <button> 加JS事件。否则 Googlebot 点都点不动,只能干瞪眼。
分页参数和URL规范化:细节里藏着魔鬼
分页参数简直是场噩梦。我见过 ?p=1、?page=2、/page/3/、?pg=4&sort=desc……各种变体。一旦组合上排序参数,分页数量指数爆炸,能生成成千上万个重复、近似页面。这就是典型的爬虫黑洞,蜘蛛进去就出不来了。
怎么办?第一,参数要统一且可配置。 站点内部强行规定只用一种分页参数格式,比如路径式 /category/page/2/,并设置好 URL 规范。第二,利用 robots.txt 或 URL 参数工具(Google Search Console 里那个)明确告诉 Google,sort、filter 这些参数跟内容主体无关,别爬变体。第三,canonical 标签指回第一页或 view-all,但注意:如果你把第二页的 canonical 指回第一页,那第二页的内容可能永远不会被收录——如果第二页的内容足够独特,这反而是损失。所以得评估,如果分页内容其实都是摘要,且主要内容在详情页,那 canonical 回第一页没问题;如果分页里就是完整内容(如文章列表且每篇标题摘要唯一),那就别瞎 canonize,让每页自索引,但必须用强大的内部链接把权重往回传导。
还有些人会搞 noindex, follow 给第2页以后的页面,告诉谷歌别索引,但要跟着链接。这个策略以前有效,现在风险大:谷歌可能最终停止爬取这些 noindex 页面的链接,导致新内容不被发现。所以除非你另有 sitemap 通路,否则别轻易 noindex 分页序列。
说起来都是泪,我自己就曾因为 noindex 了2~5页,导致新发布在后面的文章一个月都没收录,悔得肠子都青了。搞SEO,每一个动作都得想清楚链路。
用户体验VS搜索引擎:怎么平衡?
最后总得回到人身上。分页太浅(比如一页放3个产品),用户点得手指抽筋,跳出率飙升;分页太深(一页100个),加载慢、信息过载,还是跳出。这里面有个黄金法则:分析你用户的设备占比和屏幕尺寸,在主流分辨率下首屏能完整展示多少条目? 然后用这个数字作为每页条数基准。比如移动端一屏大概展示8—10条,那每页就8条,PC上稍微多点,可以用响应式加载,但尽量统一以免分页数在不同设备上不一致,导致被判断为cloaking。
再提一个冷门但有用的技巧:分页内链的回流设计。 在内页(第2页及以后)的文章摘要或产品条目,除了链向详情页,还可以加上到第一页的链接,或者用面包屑强化。这样权重不会只向下流,还能回上来。另外,在分页导航里,给“上一页”、“下一页”加 rel=prev/next(尽管谷歌不保证用),同时保证页码链接都是可爬的 <a>,别用JS生成分页组件,那简直是给爬虫设路障。
好了,分页这点事儿,讲多了都是辛酸。总结一句话:别迷信单一方案,view-all、分页、无限滚动都不是银弹,得根据内容量、更新频率、服务器性能、用户场景混搭着来。但无论如何,永远给爬虫留一条可爬的静态链接路径,这是底线。 你的同行可能已经悄悄优化了分页,你的流量正在被瓜分——赶紧检查下自己站的分页情况吧。 这样的优质帖子越多越好,希望论坛能多一些这样真诚的交流。 这样用心的帖子不多见,必须顶上去让更多人看到优质内容。 已经推荐给朋友来看了,好东西就应该一起分享一起学习。 没想到还有这么多细节,之前一直没注意到,感谢楼主提醒和科普。 非常有建设性的意见,对解决实际问题有很大的参考意义。
楼主的经历很有参考价值,给了我很多新的思考方向,非常感谢。 很多细节都考虑到了,看得出来是真正懂行的人在认真分享。
页:
[1]