先给有条件的结论:如果参数会无限增长,而你仍然把“每个参数组合”都当作应当被抓取和索引的有效地址,那么有效地址集合会随组合数发散,你无法为它写出一条稳定的规则。可行的做法是先把地址分成“规范集合”和“可发现但不进入索引的集合”,用一组明确条件决定哪些参数进入规范集合。这个结论在参数只影响展示、不影响主体内容时成立;一旦某个参数会改变页面主体,结论就会失效。
面对无限参数,常见的两种做法是:让所有带参数的地址都可被抓取,或者反过来,把带参数的地址一律排除。前者的问题不是抓取本身,而是地址集合的基数不再收敛:排序、筛选、分页、会话标识、追踪参数互相组合,理论上可以生成无穷多个 URL,而其中绝大多数内容几乎相同。后者的问题正好相反,它可能把真正区分内容的参数一起砍掉,让本该存在的页面无法被发现。
两种做法都成立的条件不同。全收适用于参数数量有限、每个参数都能显著改变主体内容、且你能为每个组合提供唯一且有价值的页面;全砍适用于参数只影响展示顺序、会话或追踪,主体内容与无参数版本一致。代价也很清楚:全收会消耗抓取预算并让重复页面互相稀释;全砍会丢掉筛选页、分页页这类有真实检索价值的入口。
判断标准不是参数名,而是去掉该参数后页面主体是否等价。可以用一个假设例子说明:假设某站有排序参数 sort、筛选参数 filter、分页参数 page。若 sort 只改变列表顺序,页面主体内容集合相同,它就不应进入规范集合;若 filter 会改变返回的商品子集,主体内容不同,它可能值得进入规范集合;若 page 指向不同批次的条目,它也必须进入规范集合,否则后续条目无法被发现。
这里的关键动作是:对每个参数单独做一次“去参数对照”。把带参数地址与无参数地址的正文主体做比较,若两者主体等价,就把该参数归入展示类;若主体不同,就归入内容类。这个动作的结果直接决定下一步——展示类参数进入排除或规范化规则,内容类参数才需要讨论如何限定其取值范围。
内容类参数往往有边界,比如筛选值来自一个有限枚举,分页数不会无限增长。展示类参数则容易发散,因为排序方向、每页数量、追踪标识可以任意组合。如果你发现某个参数的值域无法枚举,它更可能是展示类或追踪类,而不是内容类。这个判断能帮你把无限增长的部分从规范集合里剥离出去。
前面说“把展示类参数剥离出规范集合”成立的前提是参数不影响主体内容。反例是:某些筛选组合会生成一个此前不存在的聚合结果,例如同时按多个条件筛选后形成的对比页,其主体内容既不等价于任一单条件页,也不等价于无参数页。此时如果把所有组合一律排除,你会丢掉真实存在的内容;如果全部放行,组合数又会随着筛选维度增加而爆炸。
遇到这种反例,不能再用“展示类/内容类”二分法,而要改用“有检索需求且组合有限”作为准入条件。具体做法是:只保留那些有明确检索意图、且组合数量可被枚举的聚合页;其余组合不进入规范集合,但仍可作为站内导航存在。这里要说明一个事实边界:robots.txt 的抓取限制不等于可靠的索引移除,即使你阻止抓取,已索引的地址也可能仍出现在结果中;站点地图也不保证收录。因此规范集合的定义要和索引控制手段配合,而不是只靠一条规则。
可执行的动作是:列出所有参数,逐个做去参数对照,把参数标记为内容类、展示类或追踪类;只允许内容类参数进入规范集合,并为每个内容类参数设定可枚举的取值范围。做完这一步后,重新统计规范集合的规模,看它是否随组合增长而收敛。如果仍然发散,说明还有展示类参数被误判为内容类,需要回到对照步骤重新检查。
这个动作的结果会直接改变下一步:若集合收敛,就可以为规范集合生成站点地图,并分别核查不同搜索引擎对参数处理和索引控制的支持情况;若集合不收敛,就应优先收紧准入条件,而不是先扩大抓取。最后提醒一点,HTTPS 不保证安全无漏洞或排名,它和地址集合的定义是两件独立的事,不要用它来替代参数准入判断。整个判断的落点是:有效地址集合不是“所有能生成的地址”,而是在明确条件下可枚举、且每个成员都有独立主体内容的那一部分。