同一篇文章,从列表页、搜索结果、外部分享、广告落地页几个入口点进来,地址栏里可能各带一长串参数。对访客来说没什么区别,对搜索引擎来说却可能是好几个不同的 URL。参数本身不是问题,问题是当参数无限组合、每个组合都能正常打开页面时,抓取预算被切碎,页面信号也被分散。
先盘清楚站点里到底有哪些参数
把最近一段时间日志里出现过的带参数地址拉出来看一遍,通常能归成几类:
- 追踪类:utm_source、utm_medium、gclid、fbclid、spm 这类,来源是投放和分享,页面内容完全一致。
- 筛选与排序类:价格区间、品牌、排序方式、每页条数,会改变列表内容,但组合数量可能非常庞大。
- 会话类:sessionid、sid、token,一般由程序自动附加,同一访客不同时间访问都可能不一样。
- 分页与定位类:page、p、from 等,用于翻页或定位到某个位置。
一份可以照着做的自查清单
- 随手打开一个内页,复制地址,看有没有自动多出参数。
- 给同一个地址补上 utm_source=test,看页面是否返回 200 且正文与规范地址一致。
- 检查 canonical 标签指向的是不带参数的规范地址,还是当前这个带参数的地址。
- 翻一遍站点地图,确认里面只出现规范地址,没有带参数的版本。
- 抽查内部链接,看是否混用了带参数与不带参数两种写法。
- 检查筛选页、排序页当前是否允许抓取,是否需要收敛。
- 确认跳转之后落到的地址是规范地址,而不是另一条带参数的地址。
不同类型的参数,处理方式不一样
追踪参数
追踪参数对页面内容没有影响,最省事的做法是在服务器或 CDN 层做一次重定向,把带追踪参数的请求指向不带参数的地址;或者在页面 head 里输出 canonical 指向规范地址。两者选其一即可,注意不要同时给出互相矛盾的信号。
筛选与排序参数
先判断这些组合有没有真实搜索需求。有稳定搜索量的筛选组合,可以留少量给搜索引擎抓取,比如按品牌或按品类。纯粹的排序、每页条数这类变化,通常不值得单独建索引,可以用 robots.txt 限制抓取,或者在页面上加 noindex。动手屏蔽之前先看日志,别把本来有流量的页面一起挡掉。
会话参数
会话 ID 最好不出现在 URL 里,改用 Cookie 传递。如果确实已经存在,可以在 robots.txt 里做规则限制,也可以让程序在跳转时直接去掉这类参数。
处理完,还要回日志里看一眼
改完之后隔一段时间再看日志:带参数的请求占比有没有下降,规范地址的抓取是否增加,服务器上重复 URL 的处理压力有没有变化。如果只是加了 canonical,而内链里仍然大量使用带参数的地址,效果会打折扣,因为蜘蛛大部分时间还是顺着内链走。
参数治理不是一次性动作。投放链接、分享组件、分页插件升级时,都可能重新带出旧参数,定期抽查比一次性大扫除更管用。