很多站点在入口页放目标链接时,URL 后面会顺手带上参数,比如 ?from=entry、?id=123&utm_source=xxx。运营者常担心:同一个页面只是参数不同,搜索蜘蛛会不会把它当成一大堆新 URL,反复抓取、把配额分散掉?答案是有可能,但具体结果取决于参数怎么写、页面怎么响应。
搜索蜘蛛判断“是不是新 URL”的基本逻辑
搜索蜘蛛拿到链接时,先做的是 URL 层面的比较:域名、路径、查询字符串(问号后面的部分)只要有一处不同,通常就会被视为一个独立 URL,排进抓取队列。它不会先打开页面再判断“这其实是同一个页面”。
也就是说,参数不同的 URL 默认会被当成不同 URL 对待。至于会不会真的被大量抓取,还要看后面几道关口:robots.txt 是否禁止、页面是否返回 200、有没有 canonical 指向别处、以及其他页面对它的引用情况。
几种常见参数场景,结果差别很大
- 只差 utm_ 之类的营销跟踪参数:这类参数不影响内容,搜索蜘蛛一般能识别其性质,抓取意愿相对低,但并不是完全不抓。
- 差的是内容相关参数(?id=123、?page=2):不同参数确实对应不同内容,被抓取是正常且合理的。
- 参数是随机值或时间戳:每次生成都不一样,相当于给搜索蜘蛛造出无穷多个 URL,最容易造成抓取浪费。
- 参数顺序不同(?a=1&b=2 与 ?b=2&a=1):内容其实一样,但 URL 不同,容易被当成两个地址处理。
真正的问题不是“被抓取”,而是“抓了不划算”
参数 URL 被搜索蜘蛛发现本身不一定是坏事。麻烦通常出在两个地方:
- 配额被占用。站点的抓取预算有限,如果大量抓取发生在无意义参数 URL 上,真正需要更新的页面就会被排到后面。
- 重复内容。同一份内容对应多个 URL,收录结果里可能出现多个版本,权重和展示数据都不容易集中。
入口页放参数链接时的处理思路
比较稳妥的做法是先分清楚:哪些参数是必要的,哪些只是统计用的。
1. 先做 URL 规范化
对确定不需要单独抓取、也不贡献内容的参数,统一成一种标准写法,并在页面 head 里用 canonical 指向标准 URL。这样即使搜索蜘蛛抓到了带参数的版本,也有机会把信号合并到规范地址上。
2. 用 robots.txt 或参数工具做收敛
对纯统计类参数,可以在 robots.txt 里写 Disallow 规则;如果站点后台有参数处理相关设置,也可以把这类参数标记为不抓取或代表 URL。注意不要一刀切屏蔽全部参数,否则真正有内容的列表页、分页也会被一起挡住。
3. 入口页里的链接尽量写干净地址
入口页是搜索蜘蛛发现 URL 的主要入口,写在上面的链接最好就是希望被抓取的那个标准 URL。跟踪参数交给前端脚本或跳转逻辑去补,不要直接写死在 HTML 的 href 里。
4. 别让参数变成随机数
如果链接里的参数每次刷新都变(比如带时间戳、随机 session id),搜索蜘蛛每次抓到的都是“新 URL”,很容易形成抓取黑洞。这类链接不要放在入口页对外暴露的位置。
排查时可以看这几个信号
- 抓取日志里,访问量是否大量集中在某几种参数组合上。
- 搜索结果里,同一个页面是否有多个参数版本同时出现。
- 服务器日志中,同一路径被不同参数反复抓取的频率与间隔。
- 目标页面的收录情况,是否被参数页分走了本该属于它的流量。
参数并不等于坏东西,关键是有没有给它一个明确的身份:要么它是内容的一部分,要么它就该被收敛掉。入口页上写什么链接,往往就决定了搜索蜘蛛把抓取花在哪里。
总结一下:带参数的 URL 会被搜索蜘蛛当成独立 URL 处理,是否值得抓取取决于参数有没有实际意义。把必要参数规范化、把无效参数收敛掉、入口页上直接写标准地址,比等收录出问题后再补救要省事得多。