维护页撤下、正式页面重新返回 200,并不等于所有信号都已经回到正常状态。最容易被忽略的是缓存层和中间层留下的旧响应:它们可能继续把维护页或 404 状态发给爬虫和用户。核对的重点不是“页面能不能打开”,而是“谁还在收到旧信号”。
维护页最常见的两种做法,残留信号的去向完全不同。第一种是维护页返回 200,页面内容写“系统维护中”;第二种是维护页返回 503,并带 Retry-After 头。前者会被当作正常内容处理,恢复后如果缓存未清,旧内容可能继续被当作有效页面;后者属于临时不可用信号,恢复后需要确认 503 不再被任何一层缓存或代理保留。
具体动作:用 curl -I 请求原 URL,记录状态码、Cache-Control、Age、Retry-After 是否存在。如果 Age 大于 0,说明响应来自缓存而不是源站;下一步应先处理该缓存层,而不是继续改源站代码。
维护期间被缓存的响应,恢复后可能按原有 TTL 继续存活。需要分别核对:源站是否已返回新内容、CDN 边缘节点是否仍持有旧副本、浏览器本地缓存是否影响验证结果。这三者混在一起时,单看浏览器结果会误判。
如果只有 CDN 层仍返回旧内容,处理对象就是缓存刷新或等待 TTL 到期;如果源站本身就还没恢复,刷新 CDN 没有意义。这个区分决定了下一步动作的顺序。
维护期间常有人临时在 robots.txt 里禁止抓取,或在维护页上加 noindex。恢复后这两类改动如果忘记撤回,会形成与“页面已恢复”相矛盾的信号。
需要核对的具体项:robots.txt 中是否仍有针对该路径或全站的 Disallow;正式页面响应头或 HTML 中是否残留 X-Robots-Tag: noindex 或 <meta name="robots" content="noindex">;站点地图是否仍指向维护页地址而非正式 URL。
这里有两个容易混淆的判断:robots.txt 的抓取限制不等于可靠的索引移除,它只影响抓取,不保证已有索引立即消失;站点地图提交也不保证收录,它只是提示。因此看到“抓取量下降”或“提交后没变化”,不能单独证明某一步做对了或做错了,还要结合响应状态和页面可见内容一起看。
维护页上线时,常有人把首页或关键入口临时指向维护页,或加一条 302 跳转。恢复后需要逐个确认这些跳转是否已撤除,否则用户从入口进入仍会落到维护页。
假设一个场景:某站点维护时把首页 302 到 /maintenance,恢复后只改回了首页内容,但跳转规则仍留在服务器配置里。此时直接访问首页可能正常,而从旧链接或带参数入口进入时仍被重定向。验证方法是分别请求首页、栏目页和一条带参数的旧链接,记录最终落地 URL 和状态码。如果只有带参数入口被重定向,处理对象就是跳转规则的条件匹配,而不是页面本身。
按这个顺序做,每一步的结果都会缩小下一步的范围:如果源站正常而缓存异常,就不必再查 robots.txt;如果状态码正常但入口仍跳转,问题就在跳转规则而非页面内容。全部核对完成后,再用同一组 URL 复测一次,确认各层返回一致,才算把维护期的残留信号清理干净。