列表页分页参数规范:你家的翻页,正在偷偷吃掉流量
你有没有试过:首页排名稳稳的,点进去却全是第2页、第3页的列表页?或者搜自家品牌词,结果出来一堆?page=17这种连你自己都懒得点的URL?别怀疑,大概率是分页参数在捣鬼。
它不声不响,但真能让你辛辛苦苦写的标题、配的图、堆的词,全白干。
分页参数乱写,到底会引发哪些问题?
重复页面泛滥,搜索引擎直接“劝退”
比如商品列表页,第1页是 domain.com/list?page=1,第2页是 domain.com/list?page=2。看起来只是数字变了,但对搜索引擎来说——这是两个全新页面。
更麻烦的是,用户一筛选、一排序,URL就变成 domain.com/list?page=2&sort=price&category=shoes。参数一叠加,几十种组合瞬间生成。内容主体没变,只是商品顺序或范围微调,搜索引擎却当成几十个独立页面来抓取、索引、打分。
结果就是:收录量虚高,但真正该被看到的详情页反而排不上号。爬虫的时间和你的权重,全耗在翻页上了。
权重被切得稀碎,首页成了“孤岛”
我帮一个做工业设备的客户查过日志——他们产品列表有40多页,但搜索引擎给首页分配的抓取频次,还不到第5页的一半。原因很简单:没有明确告诉搜索引擎“这些页是一串儿”,系统只能靠猜。猜错了,就把首页当普通页面,把后面几十页当“新内容”反复抓。
这不是小问题。是你最想推的那一页,正在被自己的分页逻辑架空。
5个避坑方法,让分页参数不再拖你后腿
方法1:用rel="prev"和rel="next"告诉搜索引擎翻页关系
搜索引擎不是人,它不会自己琢磨“这页和下页是不是一回事”。你得主动指路。
在列表页 <head> 里加两行代码就行:
- 第1页加:
<link rel="next" href="/list?page=2"> - 第2页加:
<link rel="prev" href="/list?page=1">和<link rel="next" href="/list?page=3"> - 最后一页只加:
<link rel="prev" href="/list?page=N-1">
这就等于在HTML里画了一条线,把所有分页串成一串。搜索引擎一看就懂:“哦,这是同一个列表的不同切片。”
真实情况:一个B2B设备平台加了这个之后,收录页数少了近一半,但核心产品词的自然流量明显提升。不是因为多了什么,而是因为首页终于拿到了该有的权重。
方法2:用<link rel="canonical">指向第1页或“查看全部”页
如果你的列表页支持“全部展开”(比如点击“显示全部128个产品”),那所有分页页的 canonical 都指向这个“全部页”。搜索引擎只认这一个,其他全是辅助浏览的快照。
如果没有“全部页”,那就统一指向第1页。比如第3页的 <link rel="canonical" href="/list?page=1">。这样搜索引擎就知道:后面那些页,都是第1页的“影子”。
⚠️ 注意一个实操雷区:如果用了 rel="prev/next",就别再把 canonical 指向第1页。两者逻辑冲突——一个说“我们是一串”,一个说“只有第1页算数”。正确做法是:开了 prev/next,canonical 就老老实实指向自己;没开,才指回第1页。
方法3:用URL参数工具或robots.txt屏蔽无用参数
CMS后台默认带的筛选、排序、每页条数等参数,对用户有用,对SEO是累赘。?sort=price&limit=20&page=3 这种组合,搜索引擎根本不需要知道。
Google Search Console 的「URL参数」设置里,可以把 sort、order、limit 这类参数标为“不影响页面内容”,搜索引擎就不会为它们单独建索引。
百度搜索资源平台也有对应功能,叫「URL参数设置」。
如果想更彻底,直接在 robots.txt 里拦住:Disallow: /*?*sort=Disallow: /*?*limit=
注意别误伤首页——确保你的列表首页 URL 是干净的 /list,而不是 /list?page=1 开头。
方法4:把分页URL做成纯静态或伪静态
/list/2.html 比 /list?page=2 更稳。前者结构清晰,后者容易被误判成不同页面(比如加个UTM参数就又多一个URL)。
静态化还能避免参数污染:用户分享时带了 ?utm_source=weibo,不会让搜索引擎以为这是个新页面。
但别走极端。像 /category/shoes/page/2/filter/color-red/size-42 这种套娃式URL,层级太深,爬虫解析成本高。建议控制在3层以内,比如 /list/shoes/page-2 就很清爽。
方法5:用JavaScript分页代替传统翻页
现在不少内容站用“加载更多”代替跳页。页面URL不变,新内容通过Ajax动态塞进DOM。搜索引擎只看到一个URL,所有内容都在这儿。
但关键在实现:如果数据完全靠前端JS拉取,且服务端不返回完整HTML,那搜索引擎可能啥也抓不到。
稳妥做法是服务端渲染(SSR)或预渲染——首屏HTML里已经包含第1页全部内容,后续翻页由JS接管,同时用 history.pushState 更新URL(如 /list#p2),并确保该URL返回对应内容的HTML快照。
适合新闻、博客、知识库这类内容更新频繁、单页数据量适中的站点。电商大站慎用——几千个SKU一次性加载,页面会卡死,用户比搜索引擎更先放弃。
你现在就能做的3个动作
别等“技术排期”,今天下午茶时间就能动手:
打开你的网站列表页第2页、第3页,右键→查看源代码,搜
<link rel=
如果没看到prev或next标签,立刻去CMS模板里加上。哪怕只加第1页和最后一页的,也比没有强。打开百度搜索资源平台或Google Search Console,进「索引」→「覆盖率」,搜
?page=
看看有多少带page=的URL进了索引。如果一眼扫过去密密麻麻,说明分页已失控——优先补 canonical 或上 robots.txt 屏蔽。今天下班前,打开你正在用的CMS后台(比如WordPress的archive.php、Shopify的主题编辑器、或Vue项目的list.vue),找到分页链接那段代码
把<a href="?page=2">改成<a href="/list/2.html">,顺手把<link rel="canonical">指向/list。改完保存,刷新页面确认生效。
分页参数不是炫技的配置项,它是你和搜索引擎之间的“说明书”。写清楚了,它才肯好好帮你推首页;写糊了,你优化半年的标题,可能就输在第2页的URL里。