列表页、商品页、文章列表一旦带上参数,一个页面很容易裂变成几十上百个 URL。它们内容高度相似,只是排序不同、筛选条件不同,或者只是多了一串追踪码。这些 URL 被大量抓取和索引,会稀释页面本身的质量信号,也让蜘蛛把时间花在重复页面上。
先按“参数是否改变页面内容”分类
- 完全不影响内容:utm_source、gclid、sessionid、ref 之类。同一篇文章加不加这些参数,正文一个字都不差。
- 影响内容但只是顺序变化:?sort=price、?order=asc、?view=list。内容集合一致,只是排列方式不同。
- 真正改变内容集合:?color=red、?price=100-200、?page=2。页面呈现的条目确实不同。
三类参数的处置方式完全不同。混在一起处理,要么放过一堆重复页,要么误杀了本来有价值的页面。
不影响内容的参数:从源头就不要产生链接
追踪参数常常是投放或分享工具自动加的。站内所有链接应该只输出不带追踪参数的规范版本,追踪参数只在跳转和统计环节拼接。站外链来的带参 URL 无法控制,可以交给 canonical 处理——页面写一个指向无参数版本的自引用 canonical,让搜索引擎把两个版本归并。
这里有个常见误区:既在 robots.txt 里 Disallow 掉带参数的路径,又指望 canonical 生效。蜘蛛抓不到页面,就读不到页面里的 canonical,这两个手段通常只能选一个用。
只改顺序的参数:归并到默认排序
?sort=、?order=、?view= 这类参数,页面内容一致,只是排列不同,一般不值得各占一个索引位。做法是把默认排序设为规范版本,其他排序版本 canonical 指向默认版本;如果参数是页面上由用户点击产生的,也可以不生成可抓取的链接,用按钮或表单提交代替 a 标签。
早些年搜索引擎提供过参数处理工具,可以手动指定某个参数的作用,现在这类工具基本下线,实际能依赖的还是 canonical、robots.txt 和链接本身。
真的会筛出不同内容的参数:再决定收不收
颜色、尺寸、价格区间、地区这类参数,展示的条目确实不同。但它们组合起来是指数级的:颜色 × 尺寸 × 价格段,几百个变体很常见。判断标准不在于“内容是否不同”,而在于“这个组合有没有独立搜索需求”。用户会搜“红色连衣裙”这类较宽的词,搜“红色 27 码 300 到 400 元”的可能性极低。
有独立需求的少数组合,可以做成固定路径的静态页,例如 /dress/red/,放进导航或聚合入口;其余组合只作为站内筛选功能存在,用 canonical 指向最近的上级页面,或者干脆不在 HTML 里生成链接。
分页参数单独看
?page=2 后面的是真实内容,和排序参数不是一回事。翻页 URL 要不要进索引,取决于列表页本身的价值。如果列表页只是通往详情页的过道,翻页留在索引里意义有限;但也不要粗暴 Disallow,否则详情页的发现路径可能被切断。
内链是参数问题的源头
大部分参数 URL 被大量抓取,不是因为外链,而是因为站内链接输出不规范:筛选组件、排序按钮、分页器、面包屑各自生成了带参链接。清理参数 URL,第一步应该是查模板层,把所有链接统一输出成规范形式。参数只用于前端交互,不进入可抓取的 href。
怎么确认处理有没有生效
- 在抓取统计里看带参 URL 的抓取占比,是否随时间下降。
- 用站内搜索或 URL 检查类工具抽查几个典型参数 URL,看索引里认的规范版本是哪一个。
- 看蜘蛛日志中命中参数路径的请求量,判断是不是还有模板在漏链接。
参数处理很难一次到位。改完模板后通常要等蜘蛛重新抓一轮才能看到变化,期间旧的参数 URL 仍可能出现在索引中,这属于正常过程,不必急着反复调整。