同一篇文章,在搜索结果里出现两三条不同链接,点进去内容一样,只是网址后面多了一串问号参数——这种情况多半不是搜索引擎弄错了,而是站点自己把同一个页面拆成了几条不同的 URL,每条都被蜘蛛单独抓取过。索引条目是按 URL 建立的,只要地址不同,对搜索引擎来说就是两个位置,内容是否重复要等抓取和比对之后才谈得上判断。
参数 URL 是怎么被蜘蛛发现的
蜘蛛不会凭空造出带参数的地址,它抓到什么就顺着什么往下走。常见的来源有这么几处:
- 站内链接本身就带参数。导航、列表排序链接、分享按钮、跳转链接没有做处理,直接输出带追踪串的地址。
- 站外推广链接。投放、社交媒体、邮件里的链接大多带 utm 参数,被复制到论坛、评论区之后又被蜘蛛抓到。
- 站内搜索、筛选、排序产生的地址。用户点一次排序就生成一条新 URL,如果这些页面能被爬到,就会成批进入待抓取队列。
- 分页参数拼接不当,例如同一套翻页同时出现 page 和 p 两种写法。
这些地址大多内容相同,只是顺序或展示略有差别。它们本身不一定有害,但数量一多,会占用抓取资源,也让站点的收录数字被稀释——看起来涨了,真正独立的页面并没有增加。
先分清哪些参数该留、哪些该收
- 内容型参数:会改变页面主体内容的,比如按颜色、规格筛选出的结果页。这类页面如果确实有人搜索,可以保留,但标题、描述和正文最好能区分开。
- 排序型参数:按价格、销量、时间排序。多数情况下排序后的内容与默认列表高度重合,建议同一组只留一个可抓取版本。
- 追踪型参数:utm、from、ref 之类,只用于统计来源,不影响内容,属于优先收敛的对象。
- 会话与随机参数:带 session id、时间戳的地址,每次访问都不同,应尽量避免出现在能爬到的链接里。
收敛参数的几种做法
1. 从链接源头改
最省事也最有效的办法,是让站内输出的链接本身就不带多余参数。分享按钮、跳转链接、列表排序,都可以在服务端或前端处理成干净地址,参数只交给统计脚本,不写进链接。
2. 用 canonical 指回主版本
对于已经产生、短期无法删除的参数地址,可以在页面上用 canonical 指向不带参数的主地址。需要注意 canonical 是提示而非强制指令,最好配合内链改造一起做,否则它只是表达了“我推荐哪个版本”,处理速度取决于搜索引擎自己的判断。
3. 用 robots.txt 挡住不值得抓的路径
纯粹的排序、追踪参数页面,如果站内不需要它们被搜到,可以在 robots.txt 中屏蔽对应的路径模式。要留意屏蔽的是抓取而不是收录,已经进过索引的地址可能在较长时间里仍然可见,需要配合其他处理一起推进。
4. 处理站内搜索和筛选页
站内搜索结果页通常不建议放开抓取,一来内容随关键词变化、质量不稳定,二来容易生成大量近似页面。筛选页则可以保留有价值的组合,把无意义的单条件、空结果页面挡在外面。
5. 站点地图只提交主版本
站点地图里放干净的规范地址,不要混入带统计参数的链接。它不是收录开关,但能减少蜘蛛从这份文件里拿到多余地址的机会。
改完之后怎么确认
- 抽几条典型的参数地址,看看现在返回的是不是正常页面、canonical 指向哪里。
- 观察抓取日志,看带参数的请求占比是否在下降。
- 用站内搜索和筛选各点几次,检查生成的地址会不会被写进可爬链接。
- 收录数字短期可能下降,这往往是把重复版本剔出去的结果,不必急着往回加。
参数本身不是错误,问题在于同一个内容被拆成多条地址之后,站点把有限的处理资源摊薄了。收敛的目标不是让收录数量变多,而是让每个被收录的地址,都对应一个真正独立、值得存在的页面。