先给结论:当参数组合趋于无限时,有效地址集合不能靠“穷举白名单”定义,而要靠“可判定的规则”定义——即对任意一个 URL,能在不访问数据库、不依赖历史抓取记录的前提下,用一组稳定条件当场判断它是否属于有效集合。做不到这一点的站点,通常会在保留、改写、退出三条路之间反复摇摆,最后把抓取预算耗在无意义的组合上。
参数组合无限增长,本质是 URL 空间由多个可枚举维度做笛卡尔积产生:筛选、排序、分页、视图切换、追踪参数各自独立变化,组合数就是各维度取值的乘积。只要新增一个维度,白名单就要整体重建一次,维护成本随维度数量指数上升。
更关键的是,白名单只能覆盖“已经出现过”的地址。新组合在第一次被抓取之前不在名单里,于是要么被误放行,要么被误拦截,两种错误都会持续发生。所以有效集合的定义方式必须从“枚举结果”转向“枚举规则”。
一个可判定的规则通常长这样(假设示例,用于说明判定逻辑,不代表任何真实站点):
/list/ 与 /item/ 两类路径参与索引,其余路径一律视为非有效。page、cat 两个参数进入有效集合;出现 sort、view、ref 中任意一个即判为非有效。page 只接受 1 到 20 的整数,cat 只接受预定义分类值;超出范围或格式不符即判为非有效。这套规则的价值在于:面对一个从未出现过的组合,也能当场给出“是/否”的答案,而不需要等它被抓取、被收录、被统计之后再补进名单。
保留成立的前提是“该组合能独立满足一种真实检索意图,且内容主体与规范地址有实质差异”。典型情形是分页:第 2 页与第 1 页承载不同条目集合,用户确实会翻页,此时把分页地址全部折叠到第一页,会让后续条目失去可被抓取的入口。
保留不等于放任。保留的地址仍需满足两个条件:一是可被规则稳定识别,二是其规范指向明确。如果分页参数取值无上限、可以构造出 page=999999 这类空结果页,那么保留范围就必须带边界,否则有效集合又变回无限。
判断是否保留,可以做一个动作:从日志或抓取记录中抽出参数地址样本,按“是否有独立内容主体”分组。如果某一类参数地址在样本中几乎都返回相同主体,只是展示顺序或视图不同,那么保留它的理由就不成立,应转入改写或退出。这个动作的结果直接决定下一步——分组后仍存在独立主体的类别进入保留清单,其余类别进入下一轮取舍。
改写的适用前提是“参数影响的是同一份内容的呈现方式,而非内容本身”。排序、视图切换、追踪参数通常属于这一类。改写的手段是给每个地址指定一个规范形式,把参数差异折叠掉,让搜索引擎只面对有限个规范地址。
改写需要区分两种做法,它们的前提不同:
改写的一个常见误区是把 robots.txt 的抓取限制当成索引移除手段。robots.txt 只约束抓取行为,不保证已索引的地址会从结果中消失;如果目标是让某个参数组合不再作为独立结果出现,改写或移除才是对应动作。同理,站点地图里列出地址也不保证它会被收录,它只是提供发现线索,不构成有效集合的定义依据。
退出成立的前提是“该组合既无独立检索意图,也无法通过改写获得稳定规范形式”。典型是无限追踪参数、递归筛选、以及能生成空结果的边界值。这类地址继续保留,只会持续消耗抓取资源,并且让有效集合的边界越来越模糊。
退出的具体动作是让这类地址返回明确的不可索引信号,或直接不可访问,并在内部链接中不再生成它们。判断退出是否生效,不能只看抓取量下降——抓取量归零也可能来自抓取频率调整、站点整体权重变化、或抓取工具本身的问题,这些都属于合理解释,不能单独作为处理正确的证据。
退出之后需要复查一件事:被退出的地址是否承担了通往有效内容的链接职责。如果某个筛选参数是到达深层分类的唯一路径,直接退出会让那部分内容失去入口,此时应先把入口迁移到规则内的地址,再执行退出。
面对任意一个参数组合,按顺序问三个问题,就能落到具体动作上:
这条链的意义在于,它把“无限组合”这个看似无法处理的问题,转化为对每个地址的三次判断。判断依据是规则,不是历史记录,因此新增维度时不需要重建整个集合,只需要确认新维度落在哪一问里。
需要提醒的是,不同搜索引擎对参数处理、规范声明和索引信号的支持情况并不一致,同一套规则在不同引擎下的实际表现需要分别核查,不能假设一处生效就处处生效。HTTPS 只解决传输层加密,不代表站点没有其他安全漏洞,也不构成排名优势,因此它不参与有效地址集合的定义。
当规则稳定之后,有效集合的规模应当收敛到一个可预期的量级:路径数乘以允许的参数取值数。如果这个量级仍在随参数增长而增长,说明判定链里还有一问没有被真正回答,需要回到规则层继续收紧,而不是回到白名单去补条目。