站点运营里有一类问题很隐蔽:同一篇文章,在浏览器里看着是同一个页面,到了抓取和统计系统里却变成了一堆地址。常见原因是 URL 后面挂了一串参数,比如分享来源、会话标识、排序方式、筛选条件。它们对访客可能无感,对搜索蜘蛛来说却是实实在在的多个入口。
为什么 URL 参数容易把抓取预算摊薄
搜索蜘蛛发现 URL 后,会按自己的节奏去抓取。如果站内链接、sitemap、分享按钮、广告跳转都带着不同的参数,同一个内容就可能出现成百上千个地址。蜘蛛在参数变体上花的次数多了,留给其他新页面的机会自然变少。这不是说参数本身有错,而是缺少统一规则时,URL 发现会变得混乱。
参数是功能需要,规范是运营需要,两者不冲突,只需要明确哪个地址才是“正本”。
先找出哪些参数在制造重复地址
- utm_source、utm_medium、utm_campaign 等投放参数;
- sessionid、sid、phpsessid 等会话标识;
- sort、order、filter、view 等列表排序与视图参数;
- ref、from、share、source 等来源标记;
- page、p、start 等分页参数(这类要单独对待);
- width、height、quality 等图片或缩略图裁剪参数。
用几个入口做一次粗筛
不需要一开始就上复杂工具,先把已有数据翻一翻。
- 看抓取日志:同一路径如果反复出现带不同参数的记录,说明吸引蜘蛛的入口没有收敛。
- 看站点地图:sitemap 里只保留规范地址,不要混入带跟踪码的链接。
- 看站内链接:导航、面包屑、相关推荐、分享按钮,尽量输出无参数或固定参数格式。
- 看搜索结果:如果发现同一标题对应多个带参数的网址,优先处理那些有外链或有点击的变体。
处理参数重复的常用做法
1. 给每个页面指定规范地址
在页面 head 里写 canonical,指向不带跟踪参数、不带会话标识的版本。canonical 不是强制指令,但它是给蜘蛛的重要提示,配合其他措施才有效。
2. 服务器端做一次干净跳转
对于纯跟踪参数,可以在服务器或 CDN 层判断:如果 URL 只多了 utm_*、ref、from 这类参数,就用 301 跳到无参数版本。这样访客体验不变,蜘蛛也不会在两个地址间来回犹豫。
3. 谨慎使用 robots.txt 屏蔽
robots.txt 可以挡掉一部分无意义参数,但要小心别把正常分页、筛选页一起挡掉。有些参数组合本身有独立价值,屏蔽后反而让蜘蛛看不到内容。建议只在确认某类参数永远不会产生独立页面时,再做屏蔽。
4. 分页参数要单独保留
分页不是重复内容,而是内容列表的延续。对分页地址,更好的做法是保留可抓取入口,并让每个分页有自洽的标题和 canonical 策略。不要把分页参数全部塞进禁止抓取规则,否则第二页之后的内容会失去被发现的机会。
5. 控制内链和分享链接的输出
站内分享、复制链接、邮件订阅等按钮,尽量生成规范地址。投放链接可以带 utm,但落地页应尽快跳回干净版本,避免投放参数被站内爬虫一路带进内页。
和 URL 发现、蜘蛛池配合时的注意点
如果网站用蜘蛛池或主动推送来加速 URL 发现,更要把规范地址准备好。推送和蜘蛛池应该只提交规范 URL,不要批量提交带参数的变体,否则等于亲手制造重复入口。抓取预算有限时,参数变体是最容易被浪费的一类地址。
定期复查清单
- sitemap 中的 URL 是否干净、可访问、状态码正常;
- canonical 是否与页面实际内容一致,是否指向可访问地址;
- 内链、导航、相关推荐是否产生带跟踪码的链接;
- 分页、筛选参数是否有明确规则,而不是放任蜘蛛自行发现;
- 分享链接和广告落地页是否会把参数带进站内深层页面。
参数自查不是一次性的工作。每次改版、上新栏目、调整投放策略后,都可能引入新的参数规则。把它放进站点运营的例行检查里,比等到抓取日志里出现大量重复地址再处理要省事得多。