You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测WordPress站点故障并自动跳转至备用站点

嘿,很高兴能帮到你——毕竟第一次在Stack Overflow提问肯定有点忐忑😉。针对你的需求,我整理了几个在WordPress环境下可行的方案,你可以根据自己的技术能力和服务器环境来选:

方案1:服务器层面(Nginx)自动跳转(最可靠)

如果你的站点用的是Nginx,这是最稳妥的方案——毕竟要是WordPress彻底挂了(比如PHP崩了、数据库连不上),WordPress内部的代码根本跑不起来,服务器层面的配置能直接接管请求。

步骤很简单,修改你的Nginx虚拟主机配置:

upstream wordpress_backend {
    server www.first-domain.ro;
    server www.second-domain.ro backup; # 把备用站标记为备份节点
}

server {
    listen 80;
    server_name www.first-domain.ro;

    # 配置健康检查,超时5秒没响应就判定主站故障
    location /health-check {
        access_log off;
        proxy_pass http://wordpress_backend;
        proxy_connect_timeout 5s;
        proxy_read_timeout 5s;
        proxy_send_timeout 5s;
    }

    # 把所有用户请求转发到后端集群
    location / {
        proxy_pass http://wordpress_backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

修改完后重启Nginx,它就会优先尝试访问主站,一旦主站在5秒内没响应,就自动切换到备用站。你也可以把/health-check换成WordPress的首页路径,直接检查站点核心是否正常。

方案2:Apache服务器层面跳转

要是你的站点用的是Apache,也能实现类似功能,不过得先确保mod_proxy和mod_proxy_balancer这两个模块已经启用。然后修改Apache的虚拟主机配置:

<Proxy balancer://wordpress_cluster>
    BalancerMember http://www.first-domain.ro
    BalancerMember http://www.second-domain.ro status=+H # H标记为备用节点
</Proxy>

<VirtualHost *:80>
    ServerName www.first-domain.ro

    ProxyPass / balancer://wordpress_cluster/
    ProxyPassReverse / balancer://wordpress_cluster/

    # 可选:配置健康检查路径
    <Location /health-check>
        ProxyPass balancer://wordpress_cluster/health-check
        ProxyPassReverse balancer://wordpress_cluster/health-check
    </Location>
</VirtualHost>

保存配置后重启Apache,它会优先请求主站,只有当主站不可用时才会切换到备用站。

方案3:WordPress内部跳转(适合PHP仍能运行的场景)

如果主站只是部分故障(比如某个插件导致前端白屏,但PHP还能正常执行),可以在主题的functions.php里加一段代码来实现跳转:

add_action('init', 'check_main_site_health_and_redirect');

function check_main_site_health_and_redirect() {
    // 检查主站首页是否能正常返回200状态码
    $main_site_url = home_url();
    $response = wp_remote_get($main_site_url, array('timeout' => 5));

    // 如果请求失败或者状态码不对,就跳转到备用站
    if (is_wp_error($response) || wp_remote_retrieve_response_code($response) != 200) {
        wp_redirect('https://www.second-domain.ro', 302);
        exit;
    }
}

⚠️ 注意:这个方案有局限性——要是WordPress彻底崩溃(比如PHP解析错误、数据库连接失败),这段代码根本不会执行,所以只能作为服务器层面方案的补充。

最后给你几个小提示:

  • 优先选服务器层面的方案,可靠性最高,不受WordPress本身故障的影响。
  • 测试的时候,可以故意停掉主站的PHP服务或者数据库,看看是否能自动跳转到备用站。
  • 如果你用的是托管主机,没有权限修改服务器配置,可以联系主机服务商问问他们是否支持健康检查和自动切换的功能。

内容的提问来源于stack exchange,提问作者Cristian Lodor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:43:39