维护期间常见的做法是把整站或关键目录用 Disallow: / 挡住,恢复后再删掉这条规则。但删掉只是让规则不再生效,搜索系统此前看到的抓取限制、返回状态和页面内容并不会立刻同步。恢复后要核对的是三类残留:robots.txt 本身是否已可正常抓取、被挡期间返回的状态码是否仍在缓存里影响判断、以及页面可见内容与站点地图是否重新一致。缺少日志或站长平台权限时,最小可执行动作是用 curl 直接请求 robots.txt 和目标 URL,看返回头与正文,但只能证明“此刻服务器这样响应”,不能证明搜索系统已经重新抓取或已恢复收录。
恢复后容易混淆的信号有三类,处理方式完全不同。
Disallow 是否真的删干净,有没有留下重复行、注释掉的旧规则,或者被 CDN、边缘节点缓存的旧版本继续对外提供。503 加 Retry-After,这是推荐做法;但如果返回的是 200 却内容是维护页,搜索系统可能把维护页当成正常内容。恢复后要确认目标 URL 现在返回的是真实内容,而不是仍被缓存的维护页。noindex,恢复后如果这个标签还留在模板里,页面即使可抓取也不会被当作正常索引对象。这三类里,规则残留可以靠请求 robots.txt 直接验证;状态残留要看响应头;内容残留必须打开页面本身。只查其中一项就下结论,是恢复后最常见的误判。
恢复后对 robots.txt 的处理不是只有“全部删掉”一种。
选择保留部分规则:适用于维护期间只挡了某个目录(比如后台、搜索结果页、参数页),而这些路径本来就不该被抓取。此时正确动作是只删掉为维护临时加的那条,保留长期规则。判断依据是这条规则在维护之前是否已经存在——如果存在,它就不是残留,删掉反而会放开原本不想被抓的路径。
选择改写:适用于维护期间用了一条过宽的规则,比如为了省事写了 Disallow: /,但站内其实有需要持续被抓的产品页或文章页。恢复时不要简单删除,而是改写成精确路径,再单独确认这些路径可抓取。改写后必须重新请求 robots.txt,确认返回的是新版本而不是缓存旧版。
选择退出(完全移除维护规则):适用于整站维护、且站内没有需要长期屏蔽的路径。移除后仍需核对上面三类残留,因为规则没了不等于状态和内容已同步。
这里有个容易忽略的前提:如果维护期间 robots.txt 返回的是 503,搜索系统通常会沿用上一次成功抓取的版本,而不是把这次失败当成新规则。所以恢复后你看到的 robots.txt 可能一直是对的,但搜索系统手里拿的还是旧版本。这种情况只能靠时间与再次抓取消化,没有立即生效的手段。
没有日志、没有站长平台验证权限时,仍可做以下动作,但要清楚每一步能推出什么、不能推出什么。
curl -I https://example.com/robots.txt 看状态码和缓存头,再用 curl https://example.com/robots.txt 看正文。结果能说明源站或当前边缘节点返回的版本,不能说明搜索系统已抓取该版本。X-Robots-Tag。如果返回 503 或带 noindex,说明维护配置没清干净;如果返回 200,只说明此刻可访问。meta robots、canonical 和正文。这能发现模板级残留,比如维护页的 noindex 还在。做完这四步,如果全部正常,合理结论是“服务端配置已恢复”,而不是“索引已恢复”。索引恢复需要搜索系统重新抓取并处理,时间不可控,也无法用上述动作证明。
假设某站在维护期间对全站返回 503,robots.txt 写 Disallow: /,维护页模板带 noindex。恢复当天删除 Disallow、恢复 200,但忘了删模板里的 noindex。
此时请求 robots.txt 正常,请求目标 URL 返回 200,看响应头也没有异常,很容易判定“已恢复”。但打开页面源码会发现 meta name="robots" content="noindex" 仍在。这个对比说明:状态码和 robots.txt 都正常,仍不足以证明页面会被正常索引。下一步动作是删掉该标签,再重新请求页面确认源码中不再出现,然后等待重新抓取。这个例子里的数字和状态都是假设,用于说明核对顺序,不代表任何真实站点的结果。
恢复后看到某些指标变化时,不要直接归因于 robots.txt 改动。
如果 robots.txt 里同时存在互相冲突的规则(比如同一路径既有 Allow 又有 Disallow),不同搜索引擎的处理方式可能不同,需要分别核查,不能按一套规则推断所有引擎的行为。恢复后的核对重点始终是:规则、状态、内容三者是否都回到维护前的预期,而不是其中某一项看起来正常就结束。