站内筛选、排序、分享、跳转,几乎每个功能都会在 URL 后面挂一串参数。对用户来说方便,对搜索引擎来说,却可能把同一个页面拆成几十上百个地址。如果不做处理,索引里会慢慢堆积一批“长得不一样、内容几乎一样”的页面。
先把参数分成三类
处理方式不同,前提是先归类。常见参数大致可以分成三种:
- 跟踪类:utm_source、gclid、spm、from、ref 之类,只记录来源,不改变页面内容。
- 视图与排序类:sort=price、view=grid、list=card,内容主体相同,只是排列或展示方式变了。
- 筛选类:color=red、size=42、brand=x,可能筛出真正不同的结果集合,也可能组合出成千上万个地址。
三类参数的共同点是:它们都容易被蜘蛛顺着内链抓到,也容易在分享、跳转、广告投放中被外部链接带进来。
哪些参数页面值得留在索引里
可以问自己两个问题:去掉参数后,页面呈现的内容是否真的变了;以及有没有人会去搜这个组合。按这个标准大致能分出三档:
- 筛出的结果是稳定的子集合,组合数量有限,并且有对应搜索需求——可以保留,让它正常收录。
- 筛完只剩一两个结果,或者属性叠加后组合无穷——通常不值得单独收录。
- 排序、视图、分页参数——基本都不需要各留一个索引版本。
判断时别只看页面上有多少条结果,更要看这些组合会不会被用户主动搜索,以及蜘蛛是否会反复抓取同一批地址。
按顺序处理:先断内链,再谈标签
1. 内链和站点地图不要输出带参地址
很多站点的参数页面之所以被抓到,是因为站点自己就在用带参链接做导航。把分类页、列表页、文章内链统一改成无参地址,能直接掐掉大部分发现路径。这一步成本低,效果也最直接。
2. 用 canonical 指向规范版本
对于跟踪参数和排序视图参数,可以在页面上把 canonical 指向去掉参数的那个地址。注意 canonical 是提示而不是命令,它需要和自引用一起保持自洽,别出现“A 指向 B、B 又指向 A”的循环。
3. 无收录价值的组合用 noindex
当某个筛选组合用户量不大、又没有搜索需求时,可以给这类页面加 noindex,让内链仍然可用、用户仍能访问,但不进索引。前提是页面本身可以被抓取,标签才能被读到。
4. 兜底才考虑 robots.txt
robots.txt 适合屏蔽那些完全不需要被抓、也不需要通过页面传递信号的路径。它不适合用来处理重复收录,因为一旦禁止抓取,蜘蛛读不到页面上的 canonical 和 noindex。
顺序很重要:如果先用 robots.txt 屏蔽抓取,后面的 canonical 和 noindex 就都失效了,等于把可控的问题变成不可控的问题。
收敛之后怎么核对
- 用站内搜索指令加参数关键词,看索引里还剩哪些地址形式。
- 观察抓取统计中带参 URL 的占比,是否随时间下降。
- 抽查几个参数页,确认 canonical 指向无参版本、且页面能正常渲染。
- 翻日志,看蜘蛛是否还在反复抓取同一批参数组合。
两个容易踩的误区
一是把 canonical 当成即时生效的开关。索引的更新有滞后,改完通常要观察几周再判断,不要隔天看到旧地址还在就以为没生效。二是认为“被收录了总没坏处”。带参页面占的是抓取资源,也可能在搜索结果里和规范页互相竞争,让用户看到的版本变得不可控。
收敛参数收录更像是一次清理,而不是一次设置。先把发现路径收窄,再统一页面信号,最后才动用屏蔽手段,顺序对了,后续维护会省下不少力气。