投放蜘蛛池时,经常有人直接把后台导出的带参地址扔进入口页,比如一条网址后面挂着 utm_source、fbclid、spm、ref 之类的一长串参数。这类 URL 能抓到,但值不值得占用抓取频次去抓,是另一个问题。
一、跟踪参数 URL 到底算不算“新页面”
对服务器来说,带参和不带参是两条不同的地址,会各自返回 200;对搜索引擎来说,它们希望把这些识别成同一个页面。识别得准不准,取决于参数类型:
- 营销参数(utm 系列、fbclid、gclid、spm、from、ref):不改变页面内容,是典型的重复 URL 来源。
- 内容参数(id、page、p、cat、keyword、sort):会改变页面呈现的内容,属于真正不同的页面。
前者被大规模投放,往往等于给自己制造重复抓取;后者本身就是站点结构的一部分,本来就需要被正常发现。
二、搜索蜘蛛对参数的默认处理
主流搜索引擎对常见营销参数有一定识别能力,通常会做归一化处理,把带参 URL 归到主体 URL 上。但这份名单是动态的,自造参数(例如日期或投放渠道拼出来的后缀)不一定在识别范围内。结果通常是:
- 抓取频次被大量近似页面占用,真正需要更新的页面排队更久。
- 抓取日志里出现大量参数变体,排查问题时噪声明显变大。
- 页面既没有 canonical、也没有 301 时,同一内容可能以多条 URL 同时存在。
三、投放前的处理顺序
- 先做规范化。页面上用 canonical 指向不带跟踪参数的版本;如果参数纯粹是营销用途,服务端 301 到干净 URL 会更彻底。
- 再检查参数是否真的必要。能放到 cookie、埋点脚本或 referrer 里解决的,就不要留在可被抓取的 URL 上。
- 投放的 URL 用干净版本。蜘蛛池入口页和 sitemap 里优先写不带跟踪参数的地址,让抓取落在真正要被索引的那条 URL 上。
- 确认 robots.txt 没有反向误伤。用 Disallow 屏蔽参数虽然能减少抓取,但也会挡住本该抓取的内容参数;而且被屏蔽的 URL 依然可能留在索引里,只是展示形式受限。屏蔽前先分清参数种类。
四、什么情况下可以直接投带参 URL
- 参数决定内容:商品筛选、分页、多语言切换这类,URL 本身就是入口,投放有意义。
- 参数页有独立搜索需求:比如列表第二页、第三页对用户存在实际价值。
- 站点暂时无法改动代码:只能用 canonical 做软约束,此时至少要保证每个参数变体都输出正确的 canonical。
五、几个容易踩的坑
- 把参数 URL 和不带参 URL 都塞进入口页,等于人为放大重复度。
- 入口页链接先跳到一个带参地址再二次跳转,抓取路径变长,中途被放弃的概率也会上升。
- 只靠 robots.txt 处理参数,却忽略搜索引擎仍可能从外链等渠道得知这条 URL。
判断标准可以很简单:这条 URL 如果被收录,它能不能独立满足一次搜索?能,就照投;不能,就先规范化,再考虑投放。
参数本身不是问题,把参数当成新页面才是问题。投放前花几分钟区分内容参数和营销参数,通常比事后在抓取日志里一条条找原因省事得多。