【Simply Static生成静态失败】宝塔防火墙拦截了服务器本机访问自身域名 / IP 的环回请求

发布时间:2026-01-26 14:15 最后更新:2026-01-26 14:51 浏览量:共 66 次浏览

生成静态文件时,有报错,不成功。原因是:环回请求被宝塔免费版防火墙拦截造成超时!

测试复现:当把系统防火墙关闭后,Simply Static生成静态可以成功。当再次开启系统防火墙后,Simply Static生成静态又失败了,主要表现就是站点健康有以下二个关键问题。

图片说明:-1

解决方案:

1、第一步:修正 wp-config.php 配置(关键)在wp-config.php的最后面添加以下代码。

// ========== 修复WordPress环回请求/REST API(适配宝塔防火墙+Nginx) ==========
// 替换为你的站点域名(带https)
define('WP_HOME', 'https://it.hsx.ltd');
define('WP_SITEURL', 'https://it.hsx.ltd');

// 允许本地请求,禁用外部请求拦截
define('WP_HTTP_BLOCK_EXTERNAL', false);
define('WP_ACCESSIBLE_HOSTS', 'it.hsx.ltd,127.0.0.1,localhost');

// 核心修复:让环回请求使用域名+本地IP解析,保留HTTPS协议
add_filter('pre_http_request', function($response, $args, $url) {
    // 仅处理本站的REST API/环回请求
    $site_domain = parse_url(WP_HOME, PHP_URL_HOST);
    if (strpos($url, $site_domain) !== false) {
        // 替换域名解析为127.0.0.1,保留HTTPS和路径(关键:不换协议)
        $local_url = str_replace('https://' . $site_domain, 'https://127.0.0.1', $url);
        $args['sslverify'] = false; // 禁用本地SSL验证
        $args['headers']['Host'] = $site_domain; // 强制携带域名Host头,让Nginx匹配正确站点
        // 发起本地请求
        $response = wp_remote_request($local_url, $args);
    }
    return $response;
}, 10, 3);
// ========== 配置结束 ==========

多站点适配:每个 WordPress 站点仅需修改WP_HOME和WP_SITEURL的域名,其余代码完全复用。

 

2、第二步:补充 Nginx 配置(让 127.0.0.1 访问匹配对应站点)
这一步是解决127.0.0.1访问 404 的核心,且多站点可复用同一逻辑:

登录宝塔面板 → 网站 → 对应站点(mtbug.hsx.ltd)→ 设置 → 配置文件;
在 server_name mtbug.hsx.ltd; 这一行后,添加127.0.0.1(保留原域名,新增本地 IP),修改后如下:

server_name mtbug.hsx.ltd 127.0.0.1;

图片说明:【Simply Static生成静态失败】宝塔防火墙拦截了服务器本机访问自身域名 / IP 的环回请求-1

 

然后,再次点 站点健康 检测,就消失了以上2个关键问题。

再次执行 Simply Static生成静态 ,就可以正常了。

 

有的情况下,仅修改第一步,就可以实现成功了。有的时候可能还不行,需要我们继续修改第二步。

本解决方案修改,不受主题模板影响,不受插件影响。

有时有的服务器环境是可以的,有的服务器环境不行,反正检测方法就是以上。发现有问题,再在wp-config.php的最后面添加以上代码。

【2026-01-26结束】

相关文章

调所有前端VUE,标题四个字,超过自动调行,字和框竖向自动居中
zhong zhuan
宝塔面板中如何修改网站顺序
Ubuntun和debian 系统升级
【教程】Simply Static配置详情
WordPress发现大量垃圾文章被恶意发布的解决方法