在蜘蛛池入口页里给目标 URL 挂上 utm_source、utm_medium、fbclid、gclid 这类跟踪参数,是很多站长的习惯动作——统计方便,来源也清楚。但对搜索蜘蛛来说,带参数的 URL 和不带参数的 URL,本来就是两个地址。于是就出现一个常见疑问:这样写会不会让目标 URL 被当成多个页面重复抓取?
先分清两件事:发现和抓取
搜索蜘蛛从入口页读到链接,只是完成了“发现”。它会不会进一步抓取这个带参数的地址,是另一回事。带参数的链接同样能被发现,这一点通常没问题;但被发现不等于会被抓取,更不等于会以带参数的那条地址被收录。
搜索蜘蛛在读取链接后,通常会做一些基本判断:这个地址是否可访问、是否被 robots.txt 禁止、是否与已有地址高度重复。参数越多、越像无意义的随机串,被判定为重复地址的概率就越高。
哪些参数容易被“合并”,哪些容易被当成新页面
- 常见的跟踪参数(utm_*、gclid、fbclid 等)在多数搜索引擎里会被识别为跟踪用途,倾向于与无参数版本合并处理。
- 内容型参数(如 ?id=123、?page=2、?category=abc)如果确实对应不同内容,通常会被当成独立页面抓取。
- 随机参数或时间戳(?t=1699999999、?r=8f3a)最麻烦,每次生成都是新地址,容易造成大量重复抓取,浪费抓取预算。
- 排序、筛选类参数(?sort=price、?filter=red)会生成大量近似组合,处理不当也会让抓取分散。
对蜘蛛池入口页来说,实际影响是什么
入口页的作用主要是让目标 URL 被搜索蜘蛛发现。就“被发现”这一点而言,带参数的链接仍然有效。但如果入口页里所有目标链接都带一长串参数,可能出现几种情况:
- 搜索蜘蛛把带参数地址与无参数地址视为同一页面,抓取后合并,目标站日志里看到的是带参数的抓取请求,但收录里出现的是干净地址。
- 参数被判定为无效,抓取被跳过,入口页的链接等于白放。
- 参数被当成独立地址,抓取量增加,但抓回来的内容与已有页面高度相似,最终只有一条被保留。
这几种结果都不算“坏事”,但都会让入口页的实际效果变得难以判断。你以为是入口页在起作用,实际可能是目标站自己的站内链接或 sitemap 起了作用。
入口页里怎么写更稳妥
- 入口页指向目标 URL 时,尽量使用干净的、无参数的地址。统计需求可以放在跳转落地之后,或者通过服务端日志、单页埋点来解决。
- 目标站明确用 canonical 指回无参数版本。这样即使带参数地址被抓,也更可能被合并到主地址上。
- 不生成随机参数或时间戳链接。每次请求都产生新地址,只会让抓取日志变乱,不会带来额外的发现价值。
- 用 robots.txt 或站内规则拦住无意义的参数组合。比如把排序、筛选类参数统一屏蔽,只保留内容型参数。
- 定期看日志确认蜘蛛实际抓的是哪个版本。如果日志里全是带参数地址、且返回 200,就要考虑是不是在制造重复页面。
判断标准很简单:如果这条带参数的地址,你作为用户打开后看到的内容,与无参数版本完全一样,那它对搜索蜘蛛的意义就很小。
常见误区
- “加参数能提高发现速度”——没有证据支持这一点。发现速度主要取决于入口页被抓取的频率和链接是否可读。
- “参数不一样就是不同页面”——对搜索蜘蛛来说,地址不同只是前提,内容是否不同才是关键。
- “入口页链接带参数,目标站收录会更好”——收录结果由目标站自身质量、结构和内容决定,入口页只能提供发现路径。
小结
入口页里的目标链接带跟踪参数,通常不会阻断“被发现”,但会让后续的抓取和判断变得复杂。更省事的做法是:入口页用干净 URL 提供发现,参数放在统计环节处理,目标站用 canonical 收口。三者各司其职,日志也更容易看懂。