很多站点在列表页加上筛选、排序、分页和追踪参数后,URL 数量会快速膨胀。搜索蜘蛛会顺着这些链接不断发现新地址,但其中大部分只是同一批内容的排列组合。如果不做区分,抓取预算会被消耗,索引里也会混入大量低价值页面。
先按参数类型分四类
不要把所有带问号的 URL 都当成一类。更实用的做法是先看参数是做什么的。
- 追踪参数:如 utm、from、ref 等,只用于统计来源,不改变页面内容。
- 排序参数:如 sort、order,改变的是排列顺序,不是内容集合。
- 筛选参数:如 color、size、price,可能改变结果集,也可能只缩小范围。
- 会话或搜索参数:如 sid、q、keyword,通常跟用户会话或站内搜索有关。
判断值不值得收录的三个条件
一个参数 URL 能不能进索引,不取决于它是不是动态地址,而取决于它有没有独立价值。
- 有独立搜索需求:用户会主动搜索这个筛选组合,而不是只靠站内点击。
- 内容有实质差异:标题、描述、结果列表与基础列表页明显不同,不是简单换序。
- 页面稳定可访问:不会因为库存变化、会话失效而频繁变成空结果或报错。
三个条件都满足时,可以考虑保留并允许索引;只满足一个或两个时,优先考虑 canonical 或 noindex;一个都不满足时,应尽量从抓取入口就挡掉。
处理顺序:先挡抓取,再谈索引
很多问题不是“要不要收录”,而是“该不该让蜘蛛抓”。无限参数组合如果都能被抓,索引控制会变得很被动。
- robots.txt:挡掉明确的追踪参数和会话参数,减少重复抓取。
- 内链和站点地图:不要把追踪参数、排序参数写进内链和 sitemap。
- canonical:筛选结果与主列表高度相似时,指向主列表页。
- noindex:页面需要用户访问但不必进索引时使用,注意不要和 robots.txt 同时挡抓取。
- 空结果处理:没有结果时返回合适的状态码,不要给空页面大量索引入口。
顺序上,先处理明显无价值的参数抓取,再对仍有价值的筛选页做 canonical 或 noindex。不要一上来就把所有参数页 noindex,那样可能误伤有独立需求的组合。
几个容易踩坑的地方
用 robots.txt 挡了却还想 noindex
如果 robots.txt 禁止抓取,搜索引擎看不到页面上的 noindex。两者要分开决策:不想被抓就用 robots.txt,不想被索引但允许抓取就用 noindex。
筛选页内容几乎一样
同一组商品按不同顺序排列,标题和正文没有变化,这类页面更适合 canonical 到基础列表页。若筛选后结果集明显不同,再考虑保留独立 URL。
参数顺序和大小写不统一
同一个筛选条件因为参数顺序、大小写不同生成多个 URL,会加重重复。尽量统一参数顺序和命名,服务端做规范化跳转。
核对收录状态时看什么
处理完之后,不要只看收录量涨跌。可以结合抓取日志和索引报表,观察几个点:
- 被挡的参数是否还在被频繁抓取;
- 允许索引的筛选页是否进入索引;
- 主列表页的索引状态是否稳定;
- 是否出现新的参数变体。
如果抓取量下降但有效页面收录稳定,说明控制起了作用。如果有效筛选页也掉出索引,就要检查 canonical 或 noindex 是否设置过宽。
筛选参数页没有统一答案。更稳妥的做法是按参数类型和页面价值分批处理,先控制无效抓取,再决定索引取舍,最后用抓取和索引数据回头核对。
这样比一刀切更容易兼顾用户体验和搜索蜘蛛的抓取效率。