结论先行:当筛选参数可以任意排列组合时,有效地址集合应当由“是否存在独立可检索内容”来定义,而不是由参数本身是否合法来定义。具体做法是先为每个参数确定是否影响页面主体内容,再规定只有影响主体内容的参数才进入地址集合,其余参数一律归一化到默认地址。这个定义成立的前提是你能说清每个参数对页面输出做了什么;一旦出现“参数不影响内容但会改变页面可见模块”的反例,集合边界就需要重新划分。
参数组合爆炸的根源,是把所有参数都当成地址的一部分。实际可以按输出结果分成两类。
按这个划分,有效地址集合就是所有“内容型参数取值组合”的并集,入口型参数被剔除。这样集合规模从参数的全排列下降到内容型参数的笛卡尔积,通常小几个数量级。
不要靠讨论决定,直接做一次对照:固定其他参数,只改变待判断参数的一个取值,抓取或查看返回结果,比较主体内容是否出现实质差异。
这份清单就是后续所有分歧的核对基准。当两个角色对“某个地址算不算有效”意见不同时,回到清单看该参数的类型和依据,而不是重新争论。
假设某参数本身不改变主体内容,但会切换页面加载的是完整列表还是折叠摘要。按前面的规则它属于入口型,应被归一化。可如果折叠摘要版本被独立引用、且用户从该地址进入后看到的内容明显少于完整版,那么把它归一化会导致这部分可见内容没有对应地址。此时“只按主体内容是否变化”这一条就不够用,需要补充一个条件:该参数取值是否会被外部独立引用并形成稳定可见结果。若会,它也应进入有效集合。
这个反例说明,定义有效地址集合时,内容差异和引用稳定性要同时看,只看其中一个都会在边界上出错。
多个角色对同一事实理解不同,往往是因为各自看到的地址不同。把分歧转成可核对的项目,先固定三件事:
固定之后,下一步动作是拿清单去核对实际输出:随机抽取若干组合地址,按清单预期判断它们应归入有效集合还是应被归一化,再与实际返回结果比对。比对不一致的条目,就是需要重新判断的参数,而不是需要重新争论的立场。
定义完有效地址集合,接下来的动作通常是让不该出现的地址不被抓取或不被索引。这里要分清两件事:robots.txt 的抓取限制不等于可靠的索引移除,被限制抓取的地址仍可能因外部链接出现在结果中;站点地图列出地址也不保证被收录。因此对入口型参数地址,优先做归一化或返回规范信号,而不是只靠抓取限制。对确认要排除的地址,抓取限制、页面级移除信号和地址归一化是不同层面的动作,需要分别核查效果,不能因为抓取量下降就认定索引问题已解决——抓取量归零也可能只是抓取预算转移或访问被阻断。
如果现在参数组合还在增长,先停下新增地址的讨论,用一页参数清单把内容型与入口型分开,选出基准地址,然后抽样十个组合地址按清单预期与实际输出比对。比对结果会直接告诉你哪条规则需要修改,以及哪些参数应进入有效集合、哪些应被归一化;这比继续争论某个具体地址是否有效更能推进项目。