事情本身不复杂,线索都在日志里。凌晨发版时全站切到维护页,状态码还是 200,正文只有一句「系统维护中」,巡检全绿,蜘蛛也把这批页面当正常内容抓了两小时。

真正麻烦的地方在于,几个原因的现象几乎一样。维护页用的是普通模板,没有单独设置 503。另一种情况是Nginx 没有配置统一的维护开关。

少数情况下是巡检只判断状态码,不判断页面内容。

第一件事是确认维护页的返回码与 Retry-After

curl -sI https://www.example.com/ | head -5

维护期间统一返回 503

return 503; add_header Retry-After 3600;

巡检里加入正文关键词校验

curl -s https://www.example.com/ | grep -c '系统维护中'

发布完成后复检首页与内页

curl -s -o /dev/null -w '%{http_code}\n' https://www.example.com/p/1024

这类改动我都写进变更记录,过两周再出问题时能对上号。

改完先别撤,确认这几项。改成 503 后蜘蛛在维护期间停止抓取,发布结束一小时内恢复,索引没有出现维护页快照。

补一句。维护页返回 200 是最容易犯的错,503 加 Retry-After 既能挡住蜘蛛也不会伤排名。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189