维护页撤下、首页恢复 200 之后,收录并不会自动回到维护前的状态。真正需要核对的是维护期间留下的几类残留信号:缓存与 CDN 是否还在返回维护页、服务器是否仍带 Retry-After 或维护用的 503、robots.txt 是否还压着整站、以及站点地图和日志里是否留下了与恢复后不一致的记录。这些信号不处理,抓取工具看到的仍可能是维护页,恢复只是表面完成。
把残留分成三类,取舍就有依据。
503、Retry-After 响应头、robots.txt 里的全站 Disallow、CDN 或反向代理上缓存的维护页。这些会让抓取请求继续被挡在真实页面之外。410 或直接删除,不要让它继续以 200 状态和正常页面争同一批入口。noindex。它们留在线上,等于持续向抓取工具发出与现状相反的信号。判断标准只有一条:这个信号描述的是“现在维护中”还是“现在已经恢复”。描述与现状不符的,就是残留。
后台显示维护模式已关闭,不等于对外返回的已经是正常页面。直接对关键 URL 发一次请求,看状态码和响应头:
curl -I https://example.com/
需要确认的是:状态码是 200 而不是 503;没有 Retry-After;没有指向维护页的 Location;Cache-Control 不是维护期设置的长缓存。再对首页、一个栏目页、一个详情页各测一次,因为不同路径可能命中不同的缓存规则。
这一步的结果直接决定下一步:如果响应头干净,问题多半在缓存层或 robots.txt;如果仍返回 503,先修源站,其他核对都没有意义。
维护期常见的做法是临时在 robots.txt 里禁止抓取。恢复后如果忘记删除,抓取工具会继续遵守这条规则,页面再正常也不会被取回。核对方法是直接打开 /robots.txt,确认没有针对整站的 Disallow: /,也没有指向已下线的维护路径。
这里要避免一个误判:robots.txt 的抓取限制不等于索引移除。反过来也成立——删掉 Disallow 不等于页面马上会被重新抓取和收录。如果维护期间某批 URL 已经被移出索引,恢复 robots.txt 只是去掉了障碍,重新抓取仍需时间,也可能需要从其他页面给出正常内链。
站点地图同理。把维护页从 sitemap 中移除、把正常 URL 加回去,是必要的动作,但 sitemap 不保证收录。它只是提交候选,抓取与否由抓取工具决定。核对时看两点:sitemap 里是否还列着维护页 URL;正常 URL 的 lastmod 是否还停留在维护前的旧值。
服务器日志能回答一个后台看不到的问题:恢复之后,抓取工具请求的是正常页面还是仍在命中维护规则。核对时按时间切出恢复后的时段,看关键 URL 的返回状态码分布。如果大量请求仍是 503,说明缓存或规则没清干净;如果状态码已是 200 但请求量很低,那属于恢复后的正常爬取节奏问题,不是残留信号。
这里有一个容易过度推断的地方:抓取量在恢复后没有立刻回升,不能单独证明处理正确或错误。它还可能由抓取预算分配、站点整体更新频率、其他路径的抓取占用等原因造成。把日志现象和响应头、robots.txt 放在一起看,才能区分是残留没清,还是清理已完成、只是抓取尚未跟上。
如果站点使用 CDN,还要在缓存层单独核对:清除维护页缓存后,再请求一次,确认返回的是源站当前内容,而不是边缘节点上的旧副本。缓存未清时,源站修好也不会改变抓取工具看到的结果。
假设某站维护两小时,期间返回整站 503 并在 robots.txt 加了 Disallow: /,同时把首页缓存成维护页。
路径一:恢复时只关掉维护模式,不动 robots.txt 和缓存。结果是源站已正常,但抓取工具仍被 robots.txt 挡住,普通用户访问首页可能仍命中缓存的维护页。此时核对响应头会发现源站正常、边缘异常,下一步应指向缓存清除,而不是继续改源站。
路径二:恢复时依次清除缓存、删除 Disallow、更新 sitemap、再发一次请求验证。结果是三层信号一致,后续只需观察日志中的抓取是否逐步回到正常 URL。这一步不需要额外承诺,只需确认没有新的 503 或 Disallow 出现。
两条路径的差别不在维护本身,而在恢复后是否把“维护中”的信号逐项改回“已恢复”。核对清单的价值就在这里:它把不同角色对“是否已经恢复”的分歧,转成可以逐项验证的状态码、响应头和文件内容。