当筛选、排序、分页、追踪参数可以自由拼接时,地址空间会接近无限。robots.txt 无法用通配符精确描述“哪些参数组合是有效页面”,它能做的只是按路径和参数前缀做粗粒度放行或拦截。因此真正要决定的是:保留哪些组合让搜索引擎抓取,改写哪些组合收敛到规范地址,退出哪些组合彻底不参与索引。三者不能同时全选,必须按参数的业务价值分层。
同一个参数名,在不同站点上的性质可能完全相反。判断依据不是参数名本身,而是去掉它之后页面主体内容是否发生实质变化。可以用一个假设例子说明:假设某商品列表页有 color、sort、page、ref 四类参数,其中 color 会切换成不同商品子集,sort 只改变同一批商品的排列,page 影响列表分段,ref 只记录来源。此时有效地址集合应当包含 color 与 page 的有限组合,排除 sort 与 ref 的组合。
可区分的证据有三类:一是服务端渲染结果对比,去掉参数后主体内容是否一致;二是站内链接是否主动指向该组合,只有被链接的组合才更可能被持续发现;三是抓取日志中该组合是否被反复请求且返回相同内容。如果只凭参数名猜测,容易把有内容价值的维度一起屏蔽掉。
保留策略适用于参数取值有限、每个取值对应独立内容、且这些内容有独立搜索需求的场景。例如颜色、尺码、地区这类枚举维度,组合数量可控,且用户会直接搜索对应结果。此时应当在 robots.txt 中保持可抓取,同时用规范标签或自引用规范指明该组合的规范地址,避免同一内容在多参数下重复出现。
保留的代价是抓取预算被分散。当枚举维度超过两三个、每个维度取值又很多时,组合数会迅速膨胀,即使每个组合都有内容,搜索引擎也未必有足够抓取配额覆盖全部。这时保留的边界应当收缩到有站内链接支撑、有外部搜索需求的那部分组合,而不是全部数学组合。
改写策略适用于参数只影响展示形式、不影响主体内容的场景,典型是排序、视图切换、追踪来源。做法是在服务端或前端把这类参数从可索引地址中剥离,让规范地址只保留内容维度参数。例如把 ?sort=price&ref=abc 的规范指向不带这两个参数的版本,并在页面中输出对应的规范标签。
改写的适用前提是站点能稳定输出规范标签,且内部链接不再指向被改写的组合。如果内部链接仍然大量指向带排序参数的地址,规范标签的信号会被削弱。执行动作可以是:先统计模板中输出排序参数链接的位置,改为输出规范地址,再观察这些地址在抓取日志中的请求变化。若请求量下降但目标规范地址的抓取量上升,说明收敛方向有效;若两者同时下降,则可能是内部链接改动过度,切断了正常发现路径。
退出策略是把某类参数组合完全排除在抓取之外,通常用 Disallow 配合参数前缀实现。它适用于组合数量极大、内容重复度高、且没有任何独立搜索价值的场景,例如无限分页、多条件叠加筛选、会话追踪参数。
需要明确一点:robots.txt 的抓取限制不等于可靠的索引移除。被拦截的地址如果已经被外部链接指向,仍可能出现在索引中,只是缺少摘要或抓取更新。要真正退出索引,还需要配合页面级的不索引指令或服务端返回相应状态。退出的代价是可能误伤:如果某个被拦截的参数组合后来被证明有搜索价值,恢复抓取需要时间,且期间该组合的内容无法被及时更新。
因此退出的适用条件是:该组合不承担内容发现职责,站点地图和内部链接都不依赖它,且没有外部链接指向它。若这三个条件中任意一个不成立,优先考虑改写而不是直接退出。
参数组合无限增长时,robots.txt 本身无法定义“有效地址集合”,它只能定义“不抓取哪些前缀”。有效集合应当由站点地图、内部链接和规范标签共同定义:站点地图只列出确认有效的组合,内部链接只指向这些组合,规范标签把其余组合收敛过去。robots.txt 的角色是兜底拦截明显无价值的参数前缀,而不是主力筛选工具。
一个可执行的动作是:先列出所有参数名及其取值类型,把每个参数标记为内容维度、展示维度或追踪维度,然后只对内容维度做组合枚举,展示和追踪维度统一改写。执行后检查站点地图中是否只包含内容维度组合,以及抓取日志中被拦截前缀的请求是否逐步减少。如果被拦截前缀的请求没有减少,说明仍有内部或外部链接在持续指向它们,需要回到链接层面处理,而不是继续加严 robots.txt 规则。