robots txt:参数组合无限增长时怎样定义有效地址集合,先确认你手上这份资料属于哪一种

📍 WDQWDWQD987AAAAA:216.73.217.1
📱 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
🔗 /65ee6ecb4859.html
📄

robots txt:参数组合无限增长时怎样定义有效地址集合,先确认你手上这份资料属于哪一种

先给结论:当筛选参数可以自由组合时,不要试图在 robots.txt 里枚举所有“坏”参数组合,而要把可抓取地址集合定义成一份受控白名单——只放行你愿意让它被独立抓取的参数组合,其余组合用一条覆盖式规则挡住。robots.txt 只能控制抓取,不能保证移除索引;被挡住的地址若已被收录,仍可能以无参数形式或历史快照出现在结果里,所以这套定义要配合页面自身的规范化信号一起用。

先确认你手上这份资料属于哪一种

把当前 robots.txt 和一份真实的参数 URL 样本放在一起看,通常会落进三种情况之一,处理方式完全不同。

判断依据不是参数总数量,而是参数名是否有限、取值是否可枚举。如果参数名本身会新增,任何枚举都会持续失效。

用一条可核对的证据区分“该放行”和“该挡住”

不要凭直觉判断某个参数组合有没有价值。取一份服务器访问日志或抓取日志,按“参数组合”分组,看两件事:该组合是否有独立的外部链接指向,以及它是否曾被真实用户直接访问。假设一份日志里,带 ?color=red&size=m 的地址有若干外部引用,而 ?sort=price&ref=xyz 只有站内翻页产生、没有任何外链,那么前者值得作为独立地址放行,后者更适合归并到主地址。

这里要留意一个反常现象:抓取量下降并不自动说明你挡对了。它也可能是站点地图提交减少、内链被改、或服务器响应变慢导致的。要同时看被挡组合的外链数和自然落地页数据,才能把“挡得准”和“只是抓得少了”区分开。

把有效地址集合写成可维护的规则

对开放型参数,推荐用“默认挡住、显式放行”的结构,而不是“默认放行、逐条挡”。这样新增参数时默认落在被挡一侧,不会悄悄产生新地址。具体动作可以按下面的顺序做:

  1. 列出你愿意独立被抓取的参数名与固定取值,写成白名单清单。
  2. 在 robots.txt 里对带查询串的路径加一条通配拦截,再用允许规则把白名单放行。
  3. 把清单存成版本化文件,和前端筛选面板的配置放在一起,改面板时同步改清单。

执行后要观察的下一步结果:如果被挡组合的外链落地页开始出现大量 404 或软 404,说明你挡掉了本该保留的地址,需要把对应参数移回白名单;如果白名单地址的抓取占比上升而总抓取量稳定,说明集合定义在收敛,可以继续收紧。

一个假设例子:三参数筛选站怎么定集合

假设一个商品站有颜色、尺码、排序三个参数,颜色和尺码各有固定取值,排序由用户点击产生。此时有效地址集合可以定义为“颜色 + 尺码”的有限组合,排序参数一律归并回不带排序的主地址。做法是:放行颜色与尺码的组合,对排序参数加拦截,并在页面上用规范链接指向不带排序的版本。

这个例子的假设前提是颜色和尺码取值由后台维护、不会由用户自由输入。如果颜色值允许用户自定义输入,白名单会立刻失效,需要改成只放行后台预设的那几个值,其余输入走拦截。数字在这里只用于说明组合规模,不代表任何真实站点的量级。

定义完之后还要接受的两个限制

第一,robots.txt 的抓取限制不等于可靠的索引移除。被挡地址若已被收录,移除要靠页面返回正确的状态码或规范信号,不能只靠这一条规则。第二,站点地图不保证收录,把白名单地址放进站点地图只是提交候选,是否被抓取和展示仍由各搜索引擎自行决定,且不同搜索引擎对通配符和参数规则的支持情况须分别核查。

因此,有效地址集合的最终定义是两层的:robots.txt 决定哪些地址允许被抓,页面自身的规范与状态码决定哪些地址值得被当作独立页面。只做前一层,参数组合增长时你仍然会看到不该出现的地址;两层一起做,集合才会随规则收敛而稳定下来。

图1 图2

nginx