先看一个反直觉的判据:入口正常只说明抓取规则允许到达起点,不能说明深层链接被允许跟随。定位断点时,优先检查从入口到失效页的每一跳是否被规则单独拦截,而不是先怀疑内容质量或服务器性能。判断顺序应该是:先确认失效页本身是否被规则禁止抓取,再确认链接是否可被发现,最后才看服务器响应。
深层链路失效通常有两种成因,处理方式完全不同。第一种是规则拦截:入口页可抓取,但指向深层的路径被规则中的某条禁止项覆盖。第二种是链路不可达:规则并未拦截,但链接未被渲染、未被跟随或返回错误状态。两者的证据来源不同,选择依据也不同。
如果抓取日志显示入口页有请求记录,而深层页完全没有请求记录,且规则文件中对深层路径存在禁止项,那么应优先按规则拦截处理。实施动作是逐条比对规则中的禁止路径与深层链接的实际路径,确认是否存在前缀匹配或通配符覆盖。这个动作的结果会直接影响下一步:若确认被拦截,应调整规则或改用可被抓取的等价路径;若未发现拦截,则转向链路可达性检查。
如果深层页有请求记录但返回非成功状态,或根本没有请求记录且规则中无禁止项,则应优先按链路不可达处理。此时需要检查链接是否由脚本生成、是否依赖用户交互、是否被其他规则间接阻断。这个判断决定了后续是修改前端渲染方式,还是调整规则优先级。
整站扫描容易掩盖具体断点,逐跳核对更适合定位。假设一个入口页 A 指向中间页 B,B 再指向目标页 C。操作时分别确认 A 到 B、B 到 C 两段是否各自满足抓取条件。具体动作包括:检查 B 是否在规则允许范围内,检查 B 上的链接是否以可抓取形式存在,检查 C 是否被规则单独禁止。
这个动作的结果会缩小范围:如果 A 到 B 正常而 B 到 C 失效,断点就在 B 到 C 这一段,可能是 B 上的链接被规则拦截,也可能是 B 未正确输出链接。如果 A 到 B 本身就失效,则问题在更靠前的层级,需要回到入口页的链接输出方式。逐跳核对的价值在于把“深层失效”拆成可分别验证的段落,避免把规则问题和渲染问题混在一起处理。
例外情况是链路中存在重定向。重定向本身不一定是断点,但如果重定向目标被规则禁止,或重定向链过长导致抓取预算被消耗,深层页仍可能失效。此时应检查重定向目标是否在允许范围内,而不是只看重定向状态码。
确认断点后,常见有两种做法:放宽抓取规则,或修正链路本身。两者成立的条件不同,代价也不同。
选择依据是:如果深层页数量少且规则误伤明确,放宽规则更直接;如果深层页数量多且规则限制有明确意图,修正链路更稳妥。两种做法都可能影响其他页面的抓取,因此实施后应重新核对同一规则覆盖下的其他路径是否发生变化。
调整后不能只看目标页是否出现请求记录,还要确认请求是否来自正常链路而非其他入口。一个可用的验证动作是:临时屏蔽其他入口,只保留被检查的链路,观察目标页是否仍能被请求到。如果仍能请求到,说明该链路已通;如果不能,说明断点未消除或存在其他阻断因素。
需要注意,请求量归零或抓取量下降不能单独证明处理正确。这些现象还可能由抓取预算调整、服务器响应变慢、其他规则变更或外部链接变化引起。因此验证时应结合规则文件、链接输出和服务器日志三方面证据,而不是只看单一指标。
另外,robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录。深层链路恢复抓取后,是否进入索引仍取决于其他因素,不能把抓取恢复直接等同于索引恢复。不同搜索引擎对规则的支持情况须分别核查,不能假设一套规则在所有引擎中行为一致。
定位断点的核心是把“入口正常”和“深层失效”之间的路径拆成可分别验证的段落,先确认规则是否拦截,再确认链接是否可达,最后用逐跳核对缩小范围。选择放宽规则还是修正链路,取决于规则限制是否有明确意图以及深层页的数量规模。