先给结论:入口页面能抓,不代表深层链路一定放行。断点通常不在首页那条规则上,而在深层 URL 命中的更具体规则、路径大小写差异,或路径中出现的查询参数与编码字符。定位时不要重写整份文件,而是把深层 URL 逐段拆开,分别比对命中的规则,找出从哪一段开始被禁止。
深层链路失效大致分两类,处理方式不同。
区分依据很简单:把深层 URL 逐级截短,从入口路径开始,每次多加一段,看从第几段起结果翻转。如果翻转点正好落在某条规则的匹配前缀上,属于规则命中型;如果截短后始终正常、只有带参数或特殊字符时才失效,属于路径解析型。
robots.txt 的匹配按路径前缀进行,多条规则同时命中时,通常以匹配长度更长的那条为准,长度相同时才看 Allow 与 Disallow 的先后。深层链路失效,往往是因为深层路径命中了比入口更长的 Disallow。
实施动作:把疑似被挡的深层 URL 按斜杠逐段列出,例如 /a/、/a/b/、/a/b/c/,对每一段在文件中查找能匹配它的规则,标出匹配长度。哪一段开始出现更长的 Disallow,断点就在那里。
这个动作的结果直接影响下一步:如果断点来自一条明显多余的深层 Disallow,删掉或改为更精确的 Allow 即可;如果断点来自业务上确实要挡的目录,那说明这条深层链路本就不该被抓,问题不在配置错误,而在于你对该页面的用途判断有误,应改走其他方式处理,而不是放开抓取。
如果逐段截短始终正常,只有完整深层 URL 失效,重点查三类差异:大小写、查询参数、百分号编码。
假设一个例子:某深层页真实路径为 /Shop/Item?id=9,而配置里写的是 Disallow: /shop/。这属于假设场景,用于说明比较方法——若大小写敏感,则前者不被该规则命中,入口页正常也就不奇怪。此时要做的不是加一条新规则,而是确认该路径系统对大小写是否敏感,再决定规则写哪种形式。
需要提醒的是,抓取限制不等于可靠的索引移除。即使深层页面被 Disallow 挡住,它仍可能因为外链等原因出现在结果中,只是摘要信息受限。所以不要用“加一条 Disallow”当作清理深层页面的手段,那属于两件事。
定位完成后,用单一深层 URL 做一次抓取测试,确认放行或拦截符合预期。这里有个容易误判的点:某个 URL 的抓取请求量归零,并不能单独证明规则写对了,也可能是该页面本身没有内链、站点地图未包含它,或它长期无人访问。要区分这些解释,可临时从入口页加一条指向该深层的链接,观察请求是否出现;若仍无变化,再回到规则层面复查。
另外两点适用条件:站点地图不保证收录,它只提供发现线索;HTTPS 也不保证页面安全无漏洞或排名更好,与本次断点定位无关,不必混入排查。不同搜索引擎对通配符和匹配细节的支持程度需分别核查,同一份文件在甲处放行、在乙处拦截是可能的,因此验证时不要只依赖一个来源的结果。
最后,如果断点确认来自一条业务上必须保留的深层拦截规则,正确做法是接受这条链路不可抓,并改为在页面层面处理索引与展示问题,而不是为了让它被抓而放宽整段目录。这一步的取舍,决定了后续是该改配置还是该改内容策略。