站内搜索、排序、筛选是常见功能,对用户很方便,但对搜索引擎来说,它们可能生成大量相似甚至重复的 URL。如果不加管理,蜘蛛会把抓取预算花在这些低价值页面上,真正需要更新的内容反而被冷落。
搜索与筛选为什么容易失控
一个列表页加上“价格从低到高”“颜色”“品牌”“每页数量”“页码”等参数,组合数量会迅速膨胀。再叠加站内搜索关键词,URL 空间几乎是无限的。蜘蛛顺着这些链接爬,可能几天都爬不完,而且很多页面内容高度相似。
先分清哪些参数有意义
不是所有参数都要一刀切屏蔽。可以按下面几类判断:
- 排序参数:价格、销量、上架时间等排序,通常只是顺序变化,不产生新内容。
- 视图参数:列表/网格、每页数量、语言切换如果只是展示差异,也不构成独立内容。
- 筛选参数:品牌、分类、价位等筛选,如果组合后内容有明确主题,可能值得保留;如果只是随机组合,应考虑限制。
- 搜索关键词:站内搜索结果页一般不建议被索引,容易产生大量低质页面。
- 会话与追踪参数:如 sessionid、utm、from 等,应该清理或屏蔽,不要进入索引。
几种常用的处理方式
具体选哪种,要看站点技术条件和运营目标。
1. 用 robots.txt 屏蔽无意义参数
可以在 robots.txt 里写 Disallow: /*?sort= 这类规则。但要小心,别把带参数的正式页面一起屏蔽。规则上线后,用日志确认蜘蛛确实不再请求这些 URL。
2. 用 canonical 或 noindex 收敛
如果页面必须存在且用户可访问,可以在 head 里加 canonical,指向不带参数的版本。对于搜索页,可以加 noindex,follow,既不让它进索引,又保留链接传递。
3. 限制参数数量与入口
在前端限制用户可选择的条件数量,或者把筛选结果做成固定路径,比如 /brand/nike/ 而不是 /list?brand=nike&sort=price。固定路径更容易维护,也更容易被理解。
4. 把搜索页做成不可抓取
站内搜索建议用 POST 提交,或者对结果页加 noindex。不要在导航、面包屑、站点地图里放搜索结果的链接。
自查时看这几个点
- 用 site: 查询或日志,看看带参数的 URL 有没有被大量收录。
- 检查 robots.txt 是否误伤了带参数但有用的页面。
- 检查 canonical 是否指向正确,别把不带参数的页面反向指向带参数的版本。
- 检查分页与筛选组合后,是否出现同一内容多个 URL。
- 检查站内搜索页、排序页的状态码,避免返回 200 却内容是空壳。
抓取预算不是无限的。把蜘蛛引向真正有价值的页面,比让它到处乱爬更划算。
服务器与日志侧的观察
处理之后,不要马上认为万事大吉。可以在日志里看几个指标:蜘蛛对同一路径的重复请求是否下降;带参数的 URL 请求量是否减少;重要栏目的抓取频次是否上升。如果发现蜘蛛仍然在大量抓取无意义参数,可能是内链或站点地图还在导出这些地址,需要回到模板和链接入口检查。
最后提醒一点:不要为了省抓取预算,把所有筛选页都屏蔽掉。有些筛选页确实有搜索需求,也有明确主题。更好的做法是区分对待,把无意义的组合关在门外,把有价值的页面留下来并做好内链。