robots.txt 只表达“是否允许抓取”,它不直接决定页面是否进入索引。因此,区分访问抓取与索引结果的关键,是分别查两套证据:一套看服务器日志和抓取工具,确认搜索引擎是否来取过文件;另一套看搜索结果和索引状态报告,确认页面是否被收录。两者可能同时发生,也可能完全脱节。
抓取是搜索引擎发现并请求 URL 的过程,留下的是访问记录。索引是搜索引擎把内容处理后纳入结果集的过程,留下的是可检索状态。判断时不要用其中一个去推断另一个。
Disallow,只说明爬虫被要求不要抓取,不代表页面一定不在索引里;反过来,页面被频繁抓取,也不代表一定被索引。如果时间和人手有限,最先做的一步是:抽一个具体 URL,分别记录“最近是否被抓取”和“当前是否可被搜索到”。只有这两项都查清,后面的处理方向才不会错。
不要一上来就全站排查。先选 3 到 5 个有代表性的 URL,例如首页、一个栏目页、一个近期更新的内容页。为每个 URL 建一行记录,包含 URL、目标状态、最近抓取时间、当前索引状态、robots.txt 是否允许抓取、页面返回码。
这一步的适用条件是:你怀疑抓取和索引不一致,但还没有定位到具体页面。判断结果是,如果某些页面日志里有抓取、搜索结果里没有,就优先查索引侧;如果日志里长期没有抓取,就优先查抓取侧。
robots.txt 的规则按路径匹配,不同搜索引擎对通配符和指令的支持并不完全一致,所以不能只看一份文件就下结论。可以按下面顺序操作:
Disallow 覆盖。注意规则是从上到下按最具体匹配生效,而不是简单看有没有写允许。这里最关键的一步是第 4 步:把“允许抓取”和“已经抓取”作为抓取侧结论,把“能否搜索到”作为索引侧结论,分开记录。不要因为 robots.txt 允许抓取,就认为页面必然被索引。
对每个样本 URL 逐项打勾,可以减少误判:
noindex 类指令,是否与 robots.txt 规则冲突。判断规则可以这样用:允许抓取且日志有抓取、但索引状态为排除,优先处理索引侧原因;禁止抓取且日志无抓取、索引状态为已收录,优先确认是否为历史收录或外部引用,再决定是否调整规则。站点地图提交只能帮助发现 URL,不保证收录;HTTPS 也不等于页面一定安全或一定被索引。
robots.txt 一旦改动,抓取行为可能变化,但索引结果不会同步变化。维护时建议在每次修改规则后,记录修改日期、受影响路径、复查日期。复查时仍然分开看抓取侧和索引侧,不要用单一指标判断成败。
如果资源有限,优先复查被 Disallow 覆盖、但你又希望被搜索到的页面,以及日志中抓取频繁、搜索结果却不稳定的页面。前者通常需要重新评估抓取规则,后者通常需要检查内容与索引设置。
下一步可以直接做一件事:从站点中选一个你怀疑“被抓取但没被索引”的 URL,按上面的清单逐项填写,先得出抓取侧结论,再得出索引侧结论,然后只针对结论异常的那一侧安排处理。