有效地址集合不是“所有能返回200的URL”,而是“你愿意让搜索引擎抓取并保留在索引候选里的URL”。当筛选参数、排序参数、分页参数可以任意组合时,穷举既不可能也无必要;可行做法是先定义一组可判定的规范化规则,把无限组合映射到有限代表地址,再用抓取日志和索引状态验证这组规则是否真的被遵守。若规则只写在文档里、没有落到链接输出和跳转行为上,抓取预算仍会被参数变体消耗。
常见情形是:站内链接已经只指向少数几个筛选组合,站点地图也只提交了主地址,但抓取日志里仍出现大量带不同参数顺序、不同默认值、不同跟踪参数的URL。这时有两种解释。
<a>链接,或者前端把参数拼进了可被解析的历史地址。链接收敛只发生在你能看到的模板里,没有覆盖全部出口。两种解释对应完全不同的动作。前者要改输出,后者要处理存量信号。把两者混在一起,就会出现“改完模板仍然没变化”的挫败感。
不要只看抓取总量,要看抓取来源和发现路径。能区分解释的证据至少包括三类:
一个需要注明假设的短例子:假设某列表页有颜色、尺寸、排序三个参数,每个参数有若干取值。若只把“颜色+尺寸”的组合设为可抓取,其余组合在服务端跳转到该组合,那么有效地址集合就是这些组合的并集,而不是全部笛卡尔积。若跳转只在前端发生、服务端仍返回200,那么搜索引擎仍可能把每个组合当作独立地址处理。这个例子的关键不是参数数量,而是服务端响应是否与规则一致。
把规则写成可判定的形式,而不是“尽量少”这类模糊表述。建议按以下顺序确定:
这里有一个实际动作及其结果如何影响下一步:先对一小批参数变体实施“服务端跳转到代表地址”,然后观察这批地址在后续抓取中的响应码分布。如果跳转被正确识别,抓取会逐步转向代表地址;如果仍大量返回200,说明跳转没有覆盖到所有入口,下一步应检查反向代理、缓存层或前端路由是否绕过了规则。这个动作的结果直接决定你是继续扩大跳转范围,还是转向清理外部信号。
抓取量下降或某个参数变体不再出现,不能单独证明规则正确。它也可能是抓取频率整体波动、站点其他部分出现问题、或搜索引擎暂时降低了该目录的抓取优先级。反过来,抓取量没有立刻下降,也不代表规则无效,因为存量信号需要时间消化。更可靠的验证是把抓取日志、服务端响应码和索引状态交叉对照:如果代表地址的抓取占比上升、非代表地址的响应稳定为跳转或删除、且索引中非代表地址逐步减少,才能说明有效地址集合在收敛。
另外,robots.txt 的抓取限制不等于可靠的索引移除,它只阻止抓取,不保证已收录地址消失;站点地图只提交代表地址也不保证收录。不同搜索引擎对参数处理和跳转信号的支持情况须分别核查,不能假设一套规则在所有引擎上表现一致。把有效地址集合定义清楚之后,下一步才是决定用跳转、删除还是保留来处置非代表地址,而这一步必须建立在服务端响应已经一致的前提上。