把“有效地址集合”定义成一份可复算的规则,而不是一份不断追加的清单:只有当某个参数组合会改变页面主体内容、且该组合能被站内链接或规范信号稳定指向时,它才进入集合;其余组合一律归为同一地址的变体。判断依据不是参数长得像不像,而是渲染后正文、链接目标和规范声明三者是否一致。
面对无限组合,第一步不是穷举,而是按参数对输出的影响分组。可以按下面的顺序核对你手上的那份参数清单:
这一步的结果决定后续动作:进入集合的组合需要各自可访问、可被链接;不进入集合的组合需要被统一指向一个代表地址,否则每个新组合都会生成一个新的可抓取地址,让集合边界持续膨胀。
参数名相同,输出可能不同;参数名不同,输出也可能相同。可靠的核对对象是渲染后的页面快照,重点看三处:
如果正文没变而规范声明指向了另一个组合,说明这个组合不应独立进入集合;如果正文变了但站内没有任何链接指向它,它虽然内容有效,却缺少被发现路径,需要补链接或重新评估它是否值得独立存在。这里要区分“内容有效”和“可被稳定发现”,两者都满足才适合放进集合。
运营、开发、SEO 对同一地址常有不同理解:运营认为筛选结果页有价值,开发认为它只是查询参数,SEO 认为它重复。与其争论,不如把分歧写成一张可核对的表,每行一个参数组合,列固定为:渲染后主体是否变化、站内是否有链接指向、规范声明指向谁、当前是否可访问。填完后,分歧会收敛成具体差异:
这样处理的好处是,讨论对象从“参数该不该收录”变成“这一行哪一列填错了”,项目可以逐行关闭,而不是反复开会。
假设某列表页有 sort、page、filter、utm_source 四类参数。sort 只改变顺序,page 改变条目区间,filter 改变条目集合,utm_source 只用于来源标记。按前面的规则:page 与 filter 的组合会改变主体,进入集合;sort 与 utm_source 不进入集合,统一指向无这些参数的地址。此时若发现某个 page 组合的规范声明指向了第一页,应把它当作待核对项,而不是直接判定重复——先确认正文是否真的不同,再决定是修正规范还是补链接。这个动作的结果会直接影响下一步:如果正文确实不同而规范指向第一页,需要先修正规范,否则后续所有关于集合边界的判断都会建立在错误前提上。
无限增长的参数组合无法靠人工清单覆盖,能长期维护的是规则本身。建议把规则写成可执行条件:主体内容变化、存在稳定链接路径、规范声明自洽,三者同时成立才进入有效地址集合。任何新增参数组合都按同一条件复算,而不是逐个人工批准。这样即使组合继续增长,集合边界仍然由规则决定,团队之间也有一致的核对依据。规则本身需要定期复核,因为页面模板和链接结构会变,但复核的对象是规则是否仍成立,而不是重新争论每一个历史地址。