有效地址集合不是“所有能返回 301 的 URL”,而是“你承诺长期维护、并允许被外部引用的那组规范地址”。当筛选参数、排序参数、会话参数可以任意组合时,正确做法是先冻结参数白名单,再为白名单内的组合生成可枚举的规范形式,白名单之外的组合统一落到一个明确的兜底地址。下面以你手里的一份旧页面清单为对象,逐步给出可执行方案。
把清单里的 URL 按参数名分组,而不是按完整 URL 分组。对每个参数名问三个问题:它是否改变页面主体内容?它是否会被用户主动分享?它是否被站内链接或外部链接稳定引用?三个都为“是”的参数才进入白名单。只用于排序、分页游标、会话追踪、来源标记的参数,一律不进白名单。
这一步的产出是一张参数表,形如 color、size、page 保留,sort、ref、sid 剔除。剔除的参数不意味着对应 URL 立刻失效,而是它们不再享有独立规范地址,需要被归并到无参数版本或兜底版本。
假设白名单只有 color 和 size,各自可取 5 个和 4 个值,那么有效组合上限是 20 个,加上无参数版本共 21 个。这就是有效地址集合的规模。它必须是一个可以写进配置、可以逐条验证的有限列表,而不是一段“参数合法就放行”的规则。
如果白名单参数的值本身也接近无限(例如自由文本搜索词),则不要把值纳入集合,只保留一个带固定占位符的入口地址,把实际值交给前端或查询层处理。判断标准是:该值的组合能否被你逐条列出并长期维护。不能,就不进集合。
把集合写成可核对的清单后,下一步动作是给每个成员指定唯一规范地址。此时会出现两种成立条件不同的选择:
两种选择不能混用在同一组参数上,否则集合边界会重新变得模糊。
面对旧内容、旧系统或旧合作关系,先按“是否仍被引用”和“是否仍有独立内容价值”两个维度分类,而不是按上线时间分类。
关键动作是:每移除一个成员,就在参数白名单上复查一次,确认没有参数因为“只剩这一个页面在用”而应当一并剔除。移除成员后集合缩小,白名单往往也能同步收缩,这比反过来先改规则更安全。
集合定义完成后,需要验证的是边界,而不是单个页面是否跳转成功。可用的证据包括:
这里要区分几种容易误判的现象。抓取量下降可能来自集合收缩,也可能来自抓取预算重新分配、站点整体更新频率变化或外部链接减少,不能仅凭抓取量归零就断定集合定义正确。索引量下降同理,还可能是页面质量、重复内容处理或索引策略变化所致。robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录,因此验证集合边界不能只依赖这两项。
假设一个短例子:某旧筛选页有 color、sort、page 三个参数,组合数看似很大。按上述流程,sort 被剔除,page 只保留前若干页且每页有独立内容,color 保留 5 个值。最终有效集合规模从“不可枚举”降到可逐条列出的数量。此时若发现某条旧链接 301 后落到集合外地址,就说明兜底规则与集合定义不一致,需要先修兜底,再继续清理旧链接。
最后把结论写成三份可交接的内容:参数白名单及其取值、有效地址集合清单、集合外地址的统一处理规则。任何新增参数或新增内容类型,都必须先回答它是否进入白名单、进入后集合规模是否仍可枚举。若答案是否定的,就不进入有效集合,只保留一个稳定入口。这样,参数组合无论怎样增长,有效地址集合始终是一个有限、可验证、可维护的列表,而不是一个随组合膨胀的开放集合。