做电商、房产、招聘或本地服务类的站点,运营一段时间后常会遇到同一个问题:一个分类列表页,加上品牌、价格区间、颜色、排序方式等几个筛选条件,很快就能组合出几百上千个带参数的地址。这些地址算不算“入口”,搜索蜘蛛要不要挨个走过去,是 URL 发现环节里最容易被忽略的一段。
参数是怎么把 URL 数量放大的
组合放大的道理很简单:每增加一个可筛选维度,地址数量就会成倍上涨。常见的来源包括:
- 品牌 × 价格区间 × 排序方式 × 分页,四层叠加就是一串长尾;
- 同一组筛选条件换个参数顺序、再加一个跟踪参数,又是新的地址;
- 筛选后没有任何结果,页面依然返回 200 状态码。
只要页面上有可点击的链接指向这些组合,它们就会被搜索蜘蛛顺着发现。发现之后值不值得抓取、抓取之后值不值得索引,是后面两个独立的问题。
先判断:这些参数页有没有独立价值
内容是否真的不同
服务端渲染、筛选后 HTML 里商品或房源确实发生变化的,才算有差异;如果筛选完全靠前端完成,返回给搜索蜘蛛的 HTML 与无参数版本一模一样,那么这类地址在 URL 发现层面几乎没有意义,只是徒增抓取负担。
有没有真实的搜索需求
可以结合站内搜索词、外部是否有链接指向该组合、服务器日志里参数地址的实际访问量来判断。有人搜、有外链、有转化的组合,才值得保留成可发现的入口。
是否只是同一批结果的排序
“按价格排序”“按销量排序”通常不产生新内容,属于典型可以收口的地址类型。
让入口收口的几种做法
- robots.txt 屏蔽:适合明确不想被抓的目录,但要记住,Disallow 只阻止抓取,并不等于阻止 URL 被外部链接带入发现环节。它常常只是“抓到了也拿不到内容”,不能当作唯一手段。
- canonical 指向无参数版本:告诉搜索引擎哪个才是主地址,减少重复入口的分散。
- 内链只保留少数维度:把真正有价值的维度做成静态路径,例如 /phone/apple/,其余组合交给页面内的筛选控件,不生成可抓取的链接。
- 排序、视图切换用交互完成:尽量不产生新的可抓地址,同时也要清楚,JS 渲染出来的链接是否能被走到,取决于搜索引擎的渲染能力,不宜完全依赖。
- Sitemap 只放精选:把少数高价值参数页写进站点地图,其余靠站点结构自然消化。
服务器侧同样会影响发现质量
参数页大多是即时查询,响应偏慢。搜索蜘蛛的抓取额度有限,慢响应会拖长每次抓取的时间,等于变相挤压了其他页面的发现机会。给常用的参数组合做缓存、限制翻页深度上限、无结果时返回 404 或 410 而不是一个空壳 200,都能让抓取节奏更干净。
上线后的检查顺序
- 抽样对比参数页与无参数页返回的 HTML,确认是否存在真实差异;
- 拉一段服务器日志,看参数地址在总抓取量里占多大比例;
- 核对 robots.txt、canonical、内链三处规则是否互相矛盾;
- 观察抓取高峰时段服务器响应是否明显变慢。
URL 发现的关键,不是让搜索蜘蛛看到更多地址,而是让值得被看到的地址更容易被走到。