先给结论:当一批页面只有一部分被发现,而你需要判断这是否与 robots.txt 编写有关时,不要按“已发现/未发现”本身分组,而要先按“robots.txt 规则是否命中”分组,再在两组内部各自比较可抓取路径、内链入口和站点地图覆盖情况。只有命中规则的那一组出现系统性差异,才值得优先怀疑 robots.txt;如果两组表现接近,问题更可能在链接结构、页面质量或站点地图提交范围上。
“被发现”本身是一个结果,不是一个原因。同一批页面里,未被发现的页面可能同时存在多种解释:没有内链指向、离首页层级太深、站点地图没列全、内容高度重复,或者被 robots.txt 的 Disallow 挡在抓取之外。如果直接按结果分组,你会把所有原因混在一起,看不出 robots.txt 到底有没有起作用。
更麻烦的是,robots.txt 限制的是抓取,不是索引。一个页面被 Disallow 后仍可能因为外部链接而被收录;反过来,一个允许抓取的页面也可能长期不被发现。所以对照组要围绕“规则命中”来设计,而不是围绕“有没有出现在结果里”。
假设你有一批 500 个商品页,其中约 200 个被发现、300 个没有被发现(这里的数字只是说明分组方法,不代表任何真实比例)。可以按下面步骤建立对照:
这样你会得到一张可以判断取舍的对照表。如果被 Disallow 命中的页面里,未发现比例明显更高,而允许组里未发现比例与内链缺失高度相关,那么 robots.txt 只是部分原因,内链才是主因。
保留现有规则适用于:被命中的页面本来就不需要被抓取,比如筛选参数页、购物车页、内部搜索结果页。这类页面即使未被发现也不影响业务,此时不该为了“让它们被发现”而放开规则。
改写规则适用于:被命中的页面其实是需要被发现的有效内容页,而且你确认它们没有其他入口。改写时优先收窄 Disallow 的匹配范围,而不是直接删掉整条规则。改完后,观察命中组的抓取请求是否出现,再决定下一步是否调整内链或站点地图。
退出这轮对照适用于:两组页面在规则命中上没有差异,未发现比例却接近。这说明 robots.txt 不是当前变量,继续围绕它调整只会浪费时间,应转向检查链接层级和站点地图覆盖。
假设某站点有 300 个文章页,robots.txt 中有一条 Disallow: /article/,同时站点地图只提交了其中 100 个 URL。分组后发现:被 Disallow 命中的 200 个页面里,有 150 个未被发现;而未被命中的 100 个页面里,只有 20 个未被发现。这个差异提示 robots.txt 可能是主要变量,但仍需排除“站点地图只提交了 100 个”这一解释。下一步动作是:把站点地图补全到 300 个 URL,同时把 Disallow: /article/ 改为只屏蔽确实不需要抓取的子路径,然后重新观察两组的抓取请求变化。如果补全站点地图后未发现数量下降,说明站点地图是更直接的原因;如果下降不明显,再回到 robots.txt 规则本身。
最后提醒一点:不同搜索引擎对 robots.txt 的支持细节并不完全一致,同一份规则在不同引擎下的实际效果可能有差别。划分对照组时,如果条件允许,应分别核查各引擎的抓取表现,而不是用一份数据推断所有引擎的行为。只有在规则命中与未发现结果之间存在稳定、可重复的对应关系时,才值得把 robots.txt 编写作为优先调整对象。