当同一个路径可以拼接出无穷多个参数组合时,有效地址集合不能靠“列出全部正确 URL”来定义,而要靠一组可判定的规则来定义:哪些参数参与内容定位,哪些只是追踪或排序噪声,剩余组合应当返回 404 还是重定向。定义方式不同,直接影响日志里 404 的数量、抓取预算的消耗,以及不同角色对“这个地址到底存不存在”的判断。
有效地址集合的核心不是参数个数,而是参数是否改变页面主体内容。可以按下面的判断顺序处理:
假设一个筛选页有颜色和尺码两个参数,颜色有 20 个取值,尺码有 15 个取值,组合上限是 300。这个规模可以枚举,也可以为每个组合生成独立地址。但如果再叠加价格区间、排序方式、分页游标,组合数会迅速膨胀,此时继续把每个组合当作独立有效地址,站点地图和内部链接都会失控。
当参数参与内容定位,但组合数量已经超出可维护范围,优先做的是规范化,而不是全部放行。可执行的动作包括:
做完这一步,可以用一个短例子验证:假设规范地址只保留 color 和 size,那么 ?color=red&size=m&sort=price 应当 301 到 ?color=red&size=m,而 ?sort=price 单独出现时,如果它不改变主体内容,就应回到无参数版本或返回 404。这个动作的结果会直接决定下一步:如果重定向后日志里仍出现大量带 sort 的 404,说明站内链接或外部引用还在生成旧形式,需要回到链接生成环节修正,而不是继续加规则。
当参数完全不参与内容定位,只有两种合理选择,取决于它是否可能被用户或外部系统当作有效地址使用。
选择依据不是“哪个更干净”,而是“谁在生成这些地址”。如果地址由站内模板生成,优先修模板;如果由外部投放或历史链接生成,优先用重定向或忽略策略承接。把这两种情况混在一起,就会出现同一类参数有时 404、有时 200 的矛盾状态,不同角色对有效集合的理解也会因此分叉。
多个角色对“哪些地址有效”有不同理解时,不要继续争论定义,而是把分歧拆成可核对的项目:
核对时要注意,抓取量下降或 404 数量归零并不能单独证明处理正确。它也可能来自抓取频次整体下降、日志采样变化、robots.txt 拦截了抓取,或者服务器临时不可用。robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录。因此判断有效地址集合是否收敛,应同时看状态码分布、规范地址是否可访问、以及站内链接是否还在生成非规范形式。
有些参数组合看起来冗余,却不能直接 404。例如分页游标、会话恢复参数、多语言或地区切换参数,它们可能不改变主体内容,但影响用户能否到达正确状态。对这类地址,更稳妥的做法是保留可访问性,同时用规范标签指向主地址,并在内部链接中只暴露规范形式。
另一个边界是参数值本身可能非法或越界。此时返回 404 还是 400,取决于该地址是否曾经有效。如果它从未有效,404 可以接受;如果它曾经有效但内容已下线,应使用 410 或重定向到替代内容。关键是把“从未存在”和“曾经存在但已移除”分开处理,否则有效地址集合的边界会随历史数据不断漂移。
最终,有效地址集合应当写成一份可判定的规则:哪些参数参与定位、哪些组合构成规范地址、非规范形式如何响应、由谁负责修正生成源。规则确定后,再用日志和链接抽样验证它是否被实际执行,而不是用一次抓取结果反推规则。