带筛选、排序、分页参数的 URL,是很多站点地址数量失控的起点。一个列表页,加上颜色、价格区间、排序方式、每页条数这几个维度,很容易组合出成百上千个地址。蜘蛛顺着链接一路走下去,抓取路径就会在参数空间里打转,真正需要被收录的内容页反而排到了后面。
蜘蛛是怎么走进参数迷宫的
- 列表页源码里直接输出的筛选链接,蜘蛛抓到列表页就顺带发现了
- 前端渲染后才生成的链接,初始 HTML 里没有或只有一部分
- 排序、分页控件里的 href
- 外站转载、广告投放带过来的 utm 等追踪参数
- Sitemap 或站点地图页里误收录的参数地址
这些入口往往不是一次出现的,而是随着运营活动、模板改版逐步叠加。等发现时,日志里参数型 URL 的比例已经很高了。
参数地址给抓取路径带来的三个问题
第一是重复。同一批内容对应多个地址,权重被摊薄,蜘蛛也难以判断哪个是主版本。第二是预算。抓取预算有限,蜘蛛在参数变体之间来回走,能分配给新页面的次数就少了。第三是深度。列表页参数变体抓不完,排在后面的详情页入口就更难被发现。
先分清哪些参数该留,哪些该收
- 筛选参数:如果某个筛选维度本身有搜索需求(例如品牌、品类),可以保留一到两个主维度,做成可被抓取的稳定路径
- 排序参数:通常只保留默认排序,其余排序组合用按钮或 JS 控制,不输出可抓链接
- 追踪参数:utm、来源标记这类对内容没有影响的参数,站内链接里就不该出现
- 会话与用户标识:这类参数必须拦在外面,否则每个访客都能生成一套新地址
- 分页参数:要保留,而且要保持可抓取,这是蜘蛛进入列表深层的路
收口的几种做法
- canonical 指向无参数版本。对同一内容的参数变体统一声明规范地址,注意它只是提示,不是强制指令,最好同时配合下面几条一起用。
- robots.txt 屏蔽。适合纯追踪参数和组合爆炸的筛选路径。但要清楚:一旦屏蔽,这些地址下的内容就不会被抓取,也不要指望它们能被收录。
- 链接层面收敛。站内链接尽量指向干净地址;筛选控件做成表单提交或按钮交互;分页链接保持真实 href,不要只靠点击事件。
- URL 重写。把常用筛选路径改写成静态化的目录形式,例如 /shouji/pinpai-apple/ 这类结构,比一串参数更容易被理解和传递。
- Sitemap 只提交规范地址。别把参数地址混进去,否则等于主动把蜘蛛引向迷宫。
- 内部链接统一。全站指向同一个列表时,用同一套参数规则,避免三种写法并存。
分页参数不要顺手一起拦掉
有些站点为了省抓取预算,把分页地址也放进屏蔽规则里。结果是列表页深层的内容失去了唯一的入口,蜘蛛只能看到第一页。分页要保持可点击、可抓取,URL 结构最好有规律,方便蜘蛛顺着 page 参数或静态路径往下走。
屏蔽是最后一步,不是第一步。能用链接收敛和 canonical 解决的事情,尽量不要用 robots.txt。
怎么验证收口有没有生效
- 看服务器日志里参数型 URL 的抓取占比,调整后一两周是否有下降
- 看后台覆盖率报告中被排除的地址及其原因
- 抽查同一批内容是否还存在多个可访问版本
- 确认重要列表页的分页链接仍然能被抓取
参数收口不是一次性动作。每次改版、上新筛选维度、接入新的投放渠道,都要回头看一眼:链接是怎么被输出的,蜘蛛又会顺着哪条路走进来。