站内筛选、排序、分页这些功能做起来不复杂,但它们在 URL 上留下的痕迹,往往比真正的内容页多得多。同一个列表页,加上颜色、价格区间、排序方式、页码,随手点几下就能拼出几十种组合;如果这些地址还能被站内链接、外部分享或者统计代码带出来,蜘蛛顺着爬一遍,地址总量很快就会超过站点实际内容量。
参数页失控时,通常有这几个信号
- 服务器日志里带 ? 的请求占比很高,而且大量地址只出现过一两次。
- 站长平台显示的已收录地址数,明显多于你实际写的页面数。
- 站内搜索页、筛选结果页被单独收录,标题写的是“某某筛选结果”。
- 同一批文章或商品,在多个参数地址下重复出现,互相争抢同一个词的展现。
出现这些信号,不代表参数功能做错了,而是说明你没有给参数地址划定边界。接下来要做的不是关掉功能,而是把参数分类,再决定每一类怎么处理。
先把参数分类,再决定处理方式
追踪类参数
utm_source、ref、from、spm 这类参数只服务于统计,不影响页面内容。麻烦在于,如果站内链接也带上了它们,蜘蛛每点一次就多记一个地址。处理方式很直接:站内链接、面包屑、分页按钮一律使用不带追踪参数的干净地址;页面用 canonical 指向干净版本;外部投放链接尽量走跳转页,别让它在站内出现。
排序与视图类参数
sort=price、view=list 这类参数,页面主体内容相同,只是排列顺序变了。可以保留一条默认地址作为正主,其余地址自引用默认版本,或者加上 noindex,follow。这里不建议用 robots.txt 一刀切屏蔽:被屏蔽的地址索引里可能还留着旧记录,同时页面之间的链接信号也被切断了。
筛选类参数
筛选是组合最多、最容易爆炸的一类。比较稳妥的做法是限制可被抓取的维度:只让主维度(比如品类、品牌)的筛选页进入链接和抓取,次要维度叠加出来的组合不生成站内可爬链接。如果某几个筛选组合确实有稳定的搜索需求,就把它们做成静态路径,例如用目录形式代替带多个问号的地址。
分页与会话参数
分页地址建议保持可抓取,并让每页自引用自身,不要把第二页之后的 canonical 都指向第一页,那样后面的内容很难被单独收录。至于 sessionid、sid、时间戳这类会随机变化的参数,则要从生成逻辑上掐掉,不要让它们出现在 URL 里。
落地时容易踩的几个坑
- 只靠 robots.txt 屏蔽参数,以为万事大吉,结果索引里的旧地址迟迟不掉。
- canonical 指向一个已经 404 或需要跳转的地址,等于把信号送进了空处。
- 站内分页链接直接带上当前筛选参数,访客点一次翻页就又多出一个组合。
- 筛选结果页的标题和正文与主列表完全一样,就算被收录也只是重复内容。
- 规则改完就不再看数据。参数处理是长期维护,不是一次性配置。
一份可以照着做的检查清单
- 从最近一周的日志里筛出带参数的 URL,按参数名分组,统计数量与出现频次。
- 拿这批数量和站点实际内容数对比,看参数地址是否已经明显超出。
- 把参数归入追踪、排序、筛选、分页四类,逐类写下处理策略。
- 检查站内链、分页、分享按钮、广告落地页生成的地址是否干净。
- 确认 canonical 和 noindex 规则只作用在该作用的页面上,别误伤内容页。
- 改动后隔一到两周再看一次日志,观察参数地址请求量是否下降、内容页被抓取次数是否上升。
参数本身不是问题,失控的参数组合才是。判断标准很简单:这个地址是否对应一份独立、对访客有价值的内容?如果不是,就没必要让蜘蛛把它当成一个独立页面来对待。