做站点运营时,URL 参数常常被当成小事。分享按钮、广告投放、站内筛选、排序、打印页、会话跟踪,都可能给同一个页面加上不同参数。对访客来说只是地址栏长一点,对搜索蜘蛛来说,却可能是一个全新的 URL,需要重新抓取、重新判断内容。时间一长,抓取预算被分散,重复内容变多,重要页面的发现和更新也会受影响。
先分清哪些参数会改变页面内容
参数大致可以分成两类:真正影响内容的和只影响展示或统计的。前者比如商品筛选条件、文章分页、不同语言版本;后者比如 utm 跟踪码、来源标识、会话 ID、排序方式、打印参数。对第二类参数,页面主体内容通常完全一样,只是 URL 不同。如果放任蜘蛛抓取,就容易出现同一内容多个地址的情况。
常见的高风险参数
- utm 系列:utm_source、utm_medium、utm_campaign 等,通常用于广告和渠道统计,不应改变页面内容。
- 会话 ID 与用户标识:部分系统会把 sessionid、userid 拼在 URL 上,蜘蛛每次访问都可能拿到新地址。
- 排序与视图参数:sort=price、view=list 等,只是展示顺序或样式变化,内容集合基本一致。
- 打印、分享、来源参数:print=1、from=wechat 之类,往往只影响页面局部。
- 筛选参数:颜色、价格区间、品牌等多条件组合,容易生成大量排列组合页面,其中不少没有独立价值。
自查:蜘蛛到底抓了哪些带参数的 URL
先别急着写规则。把数据拿出来看,才知道问题有多大。可以按下面几步做一次排查。
- 在服务器日志或抓取统计中,筛出带问号的 URL,按参数名和访问次数排序。
- 把参数分成“影响内容”和“不影响内容”两组,分别记录典型例子。
- 抽查每个高频率参数页面,确认返回状态码、页面标题、正文是否与规范页一致。
- 检查站内链接,尤其是导航、面包屑、文章推荐位,是否无意间带上了跟踪参数。
- 查看站点地图和 canonical 标签,确认它们指向的是不带参数的规范地址。
- 检查 robots.txt 是否误封了带参数的重要页面,或者规则太宽把该抓的筛选页也挡掉了。
处理参数的目标不是把带参数的 URL 全部消灭,而是让蜘蛛把主要精力放在有独立价值的规范页面上。
处理方式:从链接源头到服务端规则
最省力的做法是从源头减少参数传播。站内分享、推荐、广告落地页,尽量使用规范 URL;需要统计时,把参数放在跳转层或统计工具里,而不是直接写进正文链接。对于已经存在的参数,可以按情况选择以下方式。
- 规范链接:在带参数的页面上添加 canonical,指向不带参数的主版本。
- 301 跳转:对完全无内容差异的跟踪参数,服务端直接 301 到规范地址。
- robots.txt 规则:对确认无价值的参数组合做屏蔽,但要注意不要误伤分页、筛选等可能有用的页面。
- 参数顺序统一:同一组参数尽量保持固定顺序,减少因顺序不同产生的重复 URL。
- 站点地图只放规范地址:避免 sitemap 里同时出现带参数和不带参数的版本。
服务器与缓存层面的小细节
参数处理还会牵扯到服务器和缓存。有些缓存系统会把带参数的请求视为独立资源,导致同一页面被缓存多份,既占空间,也可能让不同版本返回不一致的内容。可以在缓存配置中忽略无意义的跟踪参数,只按路径和必要参数生成缓存键。同时留意参数页面返回的 HTTP 状态码,不要出现带参数可访问、不带参数反而 404 的情况。
不要一次性大改
参数规则调整后,蜘蛛和用户的行为都需要时间适应。建议先处理访问量最高、重复最明显的几类参数,观察一段时间抓取日志和收录变化,再决定是否扩大范围。每次调整后,重新检查 robots.txt、canonical 和内部链接,避免出现规则冲突。
URL 参数本身不是错误,问题在于让蜘蛛把重复地址当成新页面反复抓取。定期抽查参数使用情况,保持规范地址清晰,站点运营会轻松不少。