有条件的结论是:不要试图枚举全部参数组合,而要用“路径模板 + 参数白名单 + 冲突优先级”定义一个可复核的有效地址集合;只有当参数会改变页面主体内容、且这些内容需要被抓取时,才把对应参数纳入集合。若参数只影响排序、会话或展示样式,把它们排除并配合 canonical 更稳妥。反例是:分页、筛选与排序共用同一参数名时,白名单会误伤真实内容页,此时必须回到路径模板逐层拆分,否则定义出的集合会漏掉应当被抓取的地址。
参数组合无限增长,本质是排列组合问题。有效地址集合应满足三个条件:能被独立访问、返回稳定内容、对用户有检索价值。把这三个条件写成可核对的规则,分歧就能从“我觉得该抓”转成“这条规则是否成立”。
/list/{category}/ 这类占位形式描述一族地址,而不是逐个列出。page、id;排序、来源追踪类参数排除。这三条落到 robots.txt 时,抓取限制只约束爬虫行为,不等于可靠的索引移除;被 Disallow 的地址仍可能因外链被索引。因此定义集合时要把“抓取”和“索引”分开核对,别把 robots.txt 当成删除工具。
白名单成立的条件是:参数名稳定、语义单一、服务端对未知参数返回一致结果。比如 ?page=2 始终对应第二页列表,且不带该参数时默认第一页,这时可以把它纳入集合。
白名单失效的典型条件是参数名被复用。假设某站点 ?sort=price 与 ?sort=stock 返回的是同一批商品的不同顺序,但 ?sort=stock 在无库存时返回空列表并附带一段说明文字。此时若把 sort 整体排除,会丢掉那段有检索价值的说明页;若整体纳入,又会放开大量仅顺序不同的重复地址。可行的做法是只纳入会产生独立内容的取值,其余交给 canonical 指向主列表。这个例子是假设,用于说明判断方法,不代表任何真实站点数据。
当开发、运营与 SEO 对同一批地址理解不一致时,先做一张最小核对表,而不是继续争论。表里至少包含四项:地址样例、期望状态(允许抓取/禁止抓取)、实际返回内容是否与主列表不同、该地址是否出现在站内链接中。
动作的结果会直接影响下一步:如果核对后发现某模板返回内容与主列表一致,就把它排除并检查 canonical 是否已指向主列表;如果内容确实不同,就把它纳入白名单,并确认该地址有稳定的站内入口。站点地图不保证收录,所以纳入集合后仍要观察抓取与索引状态,而不是一次性宣布完成。
当 page 同时用于分页和筛选结果时,白名单会失效。例如 ?page=2&filter=color 与 ?page=2 返回不同内容,但参数名相同。此时只按参数名判断会把两者混为一谈。正确做法是回到路径模板,把筛选结果单独归为一族,再决定是否允许抓取。若筛选组合数量极大,优先保留有站内链接、有搜索需求的少数组合,其余用 canonical 或禁止抓取处理。
不同搜索引擎对 robots.txt 的支持情况须分别核查,同一规则在不同抓取方那里的行为可能不同。定义有效地址集合时,先以自己站点的内容价值为准,再按各抓取方的实际支持情况调整,而不是假设一套规则处处生效。
下一步动作是:选一个参数模板,写出它的纳入或排除结论,并附上一条能复核的证据(返回内容对比或站内链接记录);只有这条证据成立,才继续处理下一个模板。