
每个WordPress网站所有者最终都会面临需要暂时关闭网站的时刻——更新主要插件、切换主题、迁移到新服务器或从头重建某个部分。错误的方法会让访客看到损坏的页面或PHP错误。正确的方法是显示专业、品牌化的维护屏幕,而你在后台安心工作。
本指南涵盖了关于WordPress维护模式的所有知识:它的工作原理、最佳插件选择、如何使用代码手动设置,以及最关键的是——如何在网站离线期间避免损害SEO排名。
快速答案:对于大多数网站,安装SeedProd或WP维护模式,设计你的维护页面,然后一键激活。返回503 HTTP状态以保护SEO。更新完成后立即移除。
WordPress维护模式如何工作
当WordPress运行其内置的自动更新程序时,它会在WordPress根目录中创建一个名为.maintenance的文件。该文件包含单一行代码:
<?php $upgrading = time(); ?>
当此文件存在且其时间戳在最后10分钟内时,WordPress会拦截所有前端请求并显示默认的"因定期维护而暂时无法访问"消息和纯白页面。更新完成后(或10分钟后),该文件会自动删除,网站恢复正常。
这个内置机制虽然可用,但很基础——没有品牌化、没有预计时间、无法收集电子邮件。这就是为什么大多数网站所有者使用插件或自定义代码来替换这个默认行为,创建精美的、可定制的维护页面。
维护期间HTTP 503的重要性
在深入研究插件之前,你需要了解一个关键的技术要求:你的维护页面必须返回HTTP状态503(服务不可用),而不是200(确定)。
以下是为什么这对SEO很重要:
- 200 OK + 空白/简单页面——谷歌会把这看作是你的实际内容,可能会用空白维护页面替换其索引中的真实页面内容。这会立即损害你的搜索排名。
- 503服务不可用——搜索引擎爬虫理解这意味着临时中断。他们会记下稍后重新访问该URL,而不会更新他们的索引。你的现有排名在维护窗口内得到保护。
- Retry-After标头——将503与
Retry-After标头配对(例如,Retry-After: 3600表示一小时)会准确告诉机器人何时重新访问,使过程更加清晰。
重要提示:已登录的管理员应该始终看到正常的网站,而不是维护页面。每个好的维护模式插件都会自动处理这个问题。通过在私密/隐身窗口中测试来验证这一点(查看访客看到的内容),然后在你的常规浏览器中测试(你已登录状态)以确认管理员访问正常。
方法1:使用插件(推荐)
插件是在WordPress上启用维护模式的最简单和最灵活的方式。以下是最佳选择:
SeedProd——最适合即将上线和维护页面
SeedProd是最受欢迎的专用即将上线和维护模式插件,拥有超过100万个活跃安装。它的拖拽构建器让你无需编写代码就能创建完全品牌化的页面。
- 可视化拖放页面构建器——无需编码
- 维护、即将上线和404页面的预制模板
- 电子邮件选项加入表单,可在网站离线时收集潜在客户
- 社交媒体链接和倒计时计时器
- 自动返回正确的503状态码
- 已登录的管理员可以绕过维护页面
- 免费版本可用;Pro版本添加WooCommerce集成和更多模板
如何设置:
- 从WordPress仪表板 → 插件 → 添加新插件中安装并激活SeedProd
- 转到SeedProd → Pages
- 在"维护模式"下,点击设置维护模式页面
- 选择一个模板,并使用你的徽标、消息和颜色自定义它
- 点击保存,然后将维护模式切换为启用
- 在隐身窗口中测试,以确认访客看到维护页面
- 完成后,返回SeedProd → Pages并将维护模式切换为停用
WP维护模式和即将上线——轻量级替代方案
如果你想要一个更简单、更轻量级的插件而不需要页面构建器,WP维护模式(由Designmodo开发)是一个优秀的免费选择,拥有超过900,000个活跃安装。
- 简单的设置页面——没有页面构建器复杂性
- 内置倒计时器和电子邮件订阅
- Google Analytics集成,用于追踪停机期间的访客
- 正确的503状态码
- 白名单特定IP地址以绕过维护模式
- 自定义CSS用于样式设置
设置步骤:
- 从WordPress插件目录安装WP维护模式
- 转到设置 → WP维护模式
- 在"常规"选项卡上,将状态设置为启用
- 通过背景、标题和文本自定义"设计"选项卡
- 点击保存设置
LightStart——灵活且免费
LightStart(原名Colorlib维护模式)提供了一个干净的免费选项,具有三种模式:维护模式、即将上线和登陆页面。每种模式都有自己的一套模板和选项,如果你已经在使用Elementor等流行的页面构建器,该插件会与之集成。
插件对比提示:一次只使用一个维护模式插件。多个处理503响应的插件可能会冲突并导致意外行为。停用并删除任何你未使用的插件。
方法2:无需插件启用维护模式
如果你不想添加插件,可以使用一小段PHP代码来启用维护模式。这对想要完全控制而无需插件开销的开发者来说是理想的。
选项A:使用functions.php
将以下代码添加到你的子主题的functions.php文件。永远不要直接编辑父主题——当主题更新时,你的更改会被覆盖。
// Enable maintenance mode for non-admins
function asiagb_maintenance_mode() {
if ( ! current_user_can( 'administrator' ) ) {
wp_die(
'<h1>We\'ll Be Right Back</h1><p>Our site is currently undergoing scheduled maintenance. Please check back shortly.</p>',
'Under Maintenance',
array( 'response' => 503 )
);
}
}
add_action( 'get_header', 'asiagb_maintenance_mode' );
要停用维护模式,只需从functions.php中删除此代码。
选项B:自定义maintenance.php文件
在WordPress根目录中创建一个名为maintenance.php的文件(与wp-config.php处于同一级别)。当.maintenance文件也存在时,WordPress会在维护期间自动检测并提供此文件。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Scheduled Maintenance — Back Soon</title>
<meta name="robots" content="noindex">
<?php header('HTTP/1.1 503 Service Unavailable'); ?>
<?php header('Retry-After: 3600'); ?>
</head>
<body style="font-family:sans-serif;text-align:center;padding:80px 20px;">
<h1>Scheduled Maintenance</h1>
<p>We are currently updating our site. We will be back online shortly.</p>
</body>
</html>
然后创建触发文件。通过FTP或SSH连接并运行:
# Create the .maintenance trigger file
echo "<?php \$upgrading = time(); ?>" > /path/to/wordpress/.maintenance
要退出维护模式,只需删除.maintenance文件。
警告:编辑functions.php时要小心。此文件中的PHP语法错误将导致白屏死亡(WSOD)并将你锁定在管理员仪表板之外。始终先在暂存环境中测试更改,或者如果你对PHP不太了解,请使用插件方法。
维护模式的SEO最佳实践
正确处理维护停机时间对你的SEO排名几乎没有持久影响。遵循以下最佳实践来保护你的网站在搜索结果中的位置:
始终返回503,而不是200
这是最重要的单一规则。使用httpstatus.io等工具或浏览器开发者工具中的"网络"选项卡验证你的状态码。如果你在维护页面上看到200,请立即切换到插件或修复你的代码。
将停机时间控制在2小时以内
对于常规插件更新或主题更改,仔细规划你的工作,目标是在一到两小时内完成所有任务。提前准备你的更新步骤,在开始前使用你的备份插件进行完整网站备份,并高效工作。
添加Retry-After标头
准确告诉搜索引擎爬虫何时返回。在PHP中,在你的维护页面顶部添加这个:
<?php header('Retry-After: 3600'); ?> // 3600 seconds = 1 hour
SeedProd和大多数高质量的维护插件会自动设置这个标头。检查你的插件文档以确认。
向维护页面添加noindex
虽然从理论上讲503状态码可以防止索引,但向维护页面添加<meta name="robots" content="noindex">会增加额外的保护层。大多数维护插件默认会这样做。
在低流量时段安排维护
检查你的Google Analytics或托管统计信息,以找出你的网站访客最少的时候——通常是目标时区的早晨。在这个时间段安排主要更新和迁移,以最大程度地减少访客中断。
对主要更改使用暂存站点
对于重大重新设计、数据库迁移或主要插件升级,先在暂存站点上完成所有工作。一旦所有内容都经过测试并正常工作,快速将更改部署到生产环境——将维护窗口最小化为几分钟而不是几小时。查看我们关于WordPress暂存工作流的指南,了解分步方法。
创建专业的维护页面
维护页面是强化品牌并在停机期间维持访客信任的机会。以下是每个良好的维护页面应该包含的元素:
- 你的徽标和品牌颜色——访客应该立即识别出他们尝试访问的网站
- 清晰、友好的消息——简要解释正在发生什么以及这是临时的。避免技术术语。
- 预计返回时间——倒计时器或简单文本("今天下午3点回来")可以减少受挫感
- 联系信息——对于紧急询问,提供电子邮件地址或社交媒体链接
- 电子邮件注册表单——可选,但对于在改进网站时捕获潜在客户很有效
- 社交媒体链接——让访客关注以获得实时更新
避免让你的维护页面过于复杂——即使你的主网站在更新过程中出现数据库或资源问题,它也应该立即加载。
WooCommerce网站的维护模式
如果你运行WooCommerce商店,维护模式需要额外考虑。停机意味着失去销售,所以最小化维护窗口甚至更重要。
- 在非高峰时段安排更新——检查你的WooCommerce分析,以找出每周销售最缓慢的时期
- 提前沟通——向客户发送电子邮件警告即将进行的简短维护,特别是如果它影响结账
- 使用SeedProd Pro或与WooCommerce兼容的插件——某些维护插件可以将结账和购物车页面豁免于维护模式,允许订单在你更新网站其他部分时继续
- 维护后测试结账——重新启用网站后始终运行测试交易,以确认付款处理正确进行
- 开始前备份——使用你的备份插件在任何更新前创建文件和数据库的完整快照
维护模式故障排除
网站卡在维护模式中
最常见的维护问题是WordPress在中断的更新后卡在维护模式中。这会在自动更新程序创建.maintenance文件但在删除之前出现问题时发生。
修复:通过FTP或你的托管文件管理器连接。导航到你的WordPress根目录并删除.maintenance文件。网站将立即恢复正常。
管理员无法访问仪表板
如果你的functions.php中的维护模式代码意外应用于包括管理员在内的所有用户,请使用FTP临时重命名或删除functions.php文件。这将禁用所有自定义函数并恢复访问。修复代码,然后重新上传文件。
维护页面未显示
如果你激活了维护插件,但访客仍看到正常网站,请检查:
- 插件已激活且维护切换设置为"启用"或"激活"
- 你在隐身窗口中测试(已登录的管理员按设计绕过维护模式)
- 没有页面缓存插件提供正常网站的缓存副本——启用维护模式后刷新缓存
- 没有CDN(如Cloudflare)提供缓存版本——清除CDN缓存
禁用维护模式后的缓存问题
退出维护模式后,某些访客可能仍会看到维护页面,这是由于浏览器或服务器缓存。通过以下方式修复:
- 刷新你的WordPress缓存插件的缓存(WP Super Cache、W3 Total Cache等)
- 如果你使用Cloudflare或类似服务,清除CDN缓存
- 在维护页面本身上设置较短的缓存TTL(最好避免缓存)
维护模式检查清单
| 任务 | 状态 |
|---|---|
| 进行完整的网站备份(文件+数据库) | ☐ |
| 维护模式插件已安装并配置 | ☐ |
| 维护页面返回HTTP 503(使用httpstatus.io验证) | ☐ |
| Retry-After标头已设置 | ☐ |
| 管理员仍可访问WordPress仪表板 | ☐ |
| 在隐身窗口中测试维护页面 | ☐ |
| 更新/更改已完成并经过测试 | ☐ |
| 维护模式已停用 | ☐ |
| 已刷新缓存(WordPress + CDN) | ☐ |
| 已在隐身窗口中验证网站正常工作 | ☐ |
正确启用WordPress维护模式是任何网站管理员最简单但也是最重要的技能之一。无论你使用SeedProd等插件还是轻量级代码片段,关键原则都是一样的:返回正确的503状态、保持停机时间短,并始终在前后进行测试。有了正确的设置,你的访客会看到专业的页面,你的搜索排名保持受保护,你可以自信地在网站上工作。如果你需要一个可靠的托管环境来支持你的WordPress工作流——包括快速备份、轻松更新和99%正常运行时间——请查看AsiaGB下面所提供的内容。
使用DirectAdmin的WordPress托管——快速可靠
AsiaGB托管包括DirectAdmin控制面板、一键WordPress安装、免费SSL证书和自动备份。99%正常运行时间SLA。起价฿500/年。
查看托管计划 →