最稳妥方式是用nginx配置return 503并加retry-after头,确保返回真实503状态而非200;需禁用缓存、关闭干扰插件,并测试响应头验证生效。

宝塔面板里用 503 状态码临时闭站最稳妥
直接结论:别用 404 或 302 跳转,必须返回 HTTP 状态码 503 Service Temporarily Unavailable,并配合 Retry-After 响应头。搜索引擎明确识别这个状态为“暂时不可用”,不会降权或清收录,爬虫会定期重试。
宝塔本身没“一键维护”按钮,但可以通过网站配置里的「反向代理」或「自定义错误页」两条路实现,前者更干净、后者更通用。重点不是“怎么设”,而是“设对了没”——很多用户配完仍返回 200,本质是 Nginx 配置未生效或被其他规则覆盖。
- 确保站点使用的是 Nginx(Apache 需改用
.htaccess,逻辑不同) - 关闭所有已启用的「防CC攻击」「强制HTTPS」等可能拦截或重写响应的插件
- 检查是否启用了「网站缓存」,缓存会把 503 固化成 200 页面,必须先清空或临时禁用
用 Nginx 配置块直接返回 503(推荐)
这是最可控的方式:不依赖文件、不走 PHP、不触发任何应用层逻辑,Nginx 在最外层就拦截并返回标准响应。路径在宝塔后台 → 网站 → 设置 → 配置文件,在 server 块内 location / 上方插入:
return 503;
add_header Retry-After "3600";
注意:return 指令会立即终止匹配,所以必须放在所有 location 之前;Retry-After "3600" 表示建议爬虫 1 小时后重试,单位是秒,可按维护预计时长调整(如 6 小时填 "21600")。
- 别写成
return 503 "Under maintenance";—— 宝塔默认 Nginx 版本(1.20+)不支持带 body 的return 503,会报错重启失败 - 如果想显示友好提示页,需额外配
error_page 503 /503.html;并上传静态 HTML 到网站根目录,否则浏览器只看到空白页 - 修改后务必点「保存」再点「重载配置」,仅保存不重载,配置不会生效
用自定义 503 错误页 + 主动触发(适合无权限改配置的场景)
当无法编辑 Nginx 配置(如共享主机或权限受限),可退而求其次:上传一个真实返回 503 的 PHP 文件(如 maintenance.php),再用宝塔的「自定义错误页」功能将其设为 503 的响应体。关键点在于 PHP 文件本身必须手动发送状态头:
<?php http_response_code(503);
header('Retry-After: 3600');
exit('<h1>Site under maintenance');
?>
然后在宝塔后台 → 网站 → 设置 → 错误页 → 自定义错误页面,勾选「启用」,将 503 对应的路径填为 /maintenance.php(注意开头带斜杠)。
- 这个方法依赖 PHP 执行,若网站已完全宕机(如数据库挂了但 PHP 还跑着),它仍能工作;但若 PHP 进程崩溃,503 就退化成默认 Nginx 503 页面(无
Retry-After) - 务必测试:用
curl -I https://yoursite.com查看响应头,确认含HTTP/2 503和Retry-After字段,而不是200 OK或302 Found - 切勿把
maintenance.php放在子目录(如/tmp/maintenance.php),宝塔错误页路径解析不支持相对路径或深层路径
切换回正常状态时最容易漏掉的三件事
维护结束≠删掉配置就完事。大量用户反馈“恢复后百度仍抓 503”,问题几乎都出在缓存和残留指令上。
- 清除 CDN 缓存(如有)—— Cloudflare、腾讯云 CDN 等都会缓存 503 响应,尤其
Retry-After时间越长,缓存越顽固 - 检查 Nginx 配置是否残留
return 503;或error_page 503,宝塔有时保存失败但界面没报错,建议重进配置文件手动搜索确认 - 用 GSC(Google Search Console)或百度资源平台的「URL 检查」工具,抓取首页,看实时返回状态是否为
200,不要只靠浏览器刷新判断
真正麻烦的不是设 503,而是设得“太干净”——没留日志、没测响应头、没清多层缓存。SEO 不会因为你写了 503 就自动理解你在维护,它只认实际发出去的每一个字节。











