当筛选、排序、分页、会话标识等参数可以自由组合,URL 空间会呈指数级膨胀。内链建设方法在此处的核心不是“多链几个页面”,而是先划定一个有效地址集合:哪些参数组合允许出现在站内链接里,哪些只能靠站外或用户行为到达。常见取舍是“全部规范化到无参数版本”与“只保留可枚举的组合并允许部分参数链接”,两者成立条件不同,代价也不同。
有效地址集合的边界,取决于参数是否改变页面主体内容。可枚举的内容维度包括分类、标签、价格区间、页码;访问状态包括排序方式、每页条数、会话 ID、来源追踪、临时筛选开关。内容维度可以进入内链;访问状态原则上不进入内链,只保留一个默认值或干脆不写。
区分证据可以用一条规则验证:把该参数换成另一个值,页面主体是否出现可独立检索、可被用户直接引用的内容差异。如果只是顺序变化或同一批结果的重新排列,它属于访问状态。这个判断会直接决定下一步:内容维度进入地址白名单,访问状态进入链接清理清单。
当内容维度不超过三四个、每个维度的取值有稳定上限时,可以定义“笛卡尔积的子集”作为有效地址集合。做法是:先列出允许互相组合的维度对,再为每个维度设定取值上限,超出上限的组合不生成站内链接,只允许用户通过筛选控件继续操作。
实际动作是维护一份链接生成规则:只有白名单内的维度组合可以输出为 <a>,其余组合即使页面可访问也不主动链接。结果是内链指向的地址数量可控,抓取预算集中到真正有区分度的页面上。代价是部分长尾组合失去内链入口,只能依赖站内搜索或外部链接到达。
当维度多、取值连续或由用户自由输入时,笛卡尔积无法穷举,此时应改为“单维度或有限前缀”定义有效地址集合。也就是每个页面只链接到单一维度的取值页,不链接两个以上维度的交叉组合。多维度交叉页允许存在,但不作为内链目标。
实际动作是把交叉组合页的链接入口从导航和列表移除,只保留在筛选结果页的“继续缩小范围”控件里。结果是可被稳定抓取的地址集合收敛到单维度层,交叉页的发现依赖用户路径和外部引用。代价是交叉页的收录和更新更慢,需要接受这部分页面长期处于弱发现状态。
定义有效地址集合最可靠的方式是在链接输出层做白名单,而不是等 URL 已经产生后再去清理。白名单应包含三部分:允许的路径模式、允许的参数名、允许的参数取值形态。任何不在白名单内的组合,都不生成站内链接。
这个动作的结果是内链图谱不再随参数组合无限扩张。下一步可以据此检查抓取日志:如果白名单之外的地址仍被大量抓取,说明还有别的入口在输出这些链接,需要回到模板层排查,而不是继续扩大白名单。
存在两类例外。第一类是组合页本身有独立搜索需求,且能稳定生成唯一标题和主体内容,此时可以把它加入白名单,但应限制数量并单独监控。第二类是分页,分页参数虽然属于访问状态,但它是内容序列的延续,通常允许保留,前提是每页有可区分的内容且不与其他参数交叉。
需要说明的是,robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录。因此不能靠“禁止抓取”来定义有效地址集合,白名单必须在链接输出层生效。若发现某些组合页抓取量归零,也不能单独证明处理正确,它可能只是入口减少、外部链接缺失或该组合本身没有搜索需求。
假设一个商品列表有颜色、尺寸、价格区间、排序四个参数,颜色和尺寸各有有限取值,价格区间是连续输入,排序是访问状态。按上面的规则,有效地址集合可以包含颜色单维页、尺寸单维页,以及颜色与尺寸的有限组合页;价格区间和排序不进入内链。
验证方法是抽取白名单内和外的地址各一批,比较它们是否被稳定抓取、是否有独立内容差异。如果白名单内地址抓取稳定、白名单外地址主要靠用户路径到达,说明集合定义成立。如果白名单外地址仍被大量发现,说明还有模板在输出链接,需要先修模板再调整集合边界。这个顺序会影响下一步:先控制输出,再评估收录,避免把抓取现象误当成集合定义的结果。