先别急着改 robots.txt,而是把“参数异常”变成可复现的最小请求。做法是:固定路径、固定 UA、固定抓取方式,只改变一个参数维度,观察 Disallow 是否命中;如果同一路径不带参数能抓、带参数不能抓,问题大概率在规则匹配,而不是整站被封。下一步再决定是收紧规则、放行参数,还是把参数页改为可索引的规范形式。
“部分页面正常、特定参数异常”最常见的误判,是把抓取工具的过滤、缓存或频控当成 robots.txt 规则命中。缩小条件前,先做一组对照:
如果只有带参数版本失败,而不带参数版本稳定成功,规则匹配的可能性上升。如果两个版本都失败,先排查抓取端、网络或服务端返回,不要直接改规则。这里的关键动作是固定变量后只改参数,因为只有这样才能把“异常”从主观感受变成可比较的证据。
参数异常通常不是单一原因。按下面三类分别构造最小复现,能快速排除大部分干扰:
假设规则写成 Disallow: /*?sort=,而实际 URL 是 /list?page=2&sort=price。此时 sort= 不在问号后第一位,通配符可能不按预期命中。测试时把参数顺序调换,分别请求 ?sort=price&page=2 与 ?page=2&sort=price,看拦截结果是否随顺序变化。若变化,说明规则依赖参数位置,需要改写为覆盖任意位置的模式,或直接放行该路径。
同一参数可能以 %2C、,、大写或小写出现。构造一组仅编码或大小写不同的 URL,逐一请求。若只有某种写法被拦截,规则应改为不区分大小写,或对编码形式做统一处理。这个动作的结果会直接影响下一步:是修规则,还是修站内链接生成方式。
如果规则写在子目录下,而参数页实际位于另一层级,可能只有部分路径受控。用同一参数分别请求两个不同层级的路径,比较是否都被拦截。若只有一个层级异常,问题在规则覆盖范围,而不是参数本身。
把测试结果整理成一张只含必要字段的对照表,例如:路径、参数、UA、是否被拦截、返回状态。根据结果分两种决策:
两种选择成立的条件不同:如果参数页有独立搜索价值且内容不重复,放行更合理;如果参数只用于排序、筛选且不改变核心内容,排除或规范化更合适。假设某站有 20 个筛选参数,其中只有 2 个会生成独立可索引内容,那么只对另外 18 个做限制,比整站禁止参数更可控。这个假设用于说明比较方法,不代表任何真实站点数据。
改完规则后,重新执行同一组最小请求,确认目标参数从不允许变为允许,或从允许变为不允许。这里要强调:robots.txt 的抓取限制不等于可靠的索引移除。即使规则生效,已收录页面也可能继续出现在结果中,因为抓取限制和索引移除是两件事。同样,站点地图不保证收录,HTTPS 也不保证安全无漏洞或排名。不同搜索引擎对通配符和参数处理的支持情况须分别核查,不能用一个平台的结果推断另一个平台。
如果抓取量或请求量下降,也不能单独证明处理正确。它可能是规则生效,也可能是抓取端调整、频控、缓存或站点其他变更导致。要结合修改前后的对照请求、返回状态和日志中的 UA 分布来判断。下一步动作应基于可复现的对照结果,而不是单一指标归零。
最后,把本次缩小条件的过程写成简短记录:固定了哪些变量、测试了哪几组参数、每组结果如何、最终改了哪条规则、复查时用什么请求验证。这样下次再出现“部分正常、特定参数异常”时,可以直接复用同一套对照方法,而不必从零猜测。记录中只需保留能支撑决策的证据,不必堆砌无关指标。