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

使用Google托管SSL的Bitnami WordPress混合内容问题求助

解决Bitnami WordPress + Google托管SSL的混合内容问题

1. 先搞定WP对HTTPS请求的识别(核心)

你之前改WP_HOME/SITEURL为HTTPS就崩溃,是因为SSL终止在Google负载均衡器上,服务器本身收的是HTTP请求,WP后端自身调用时会强制用HTTPS连服务器,但服务器没配SSL,自然炸了。解决这个得让WP明确:用户用的是HTTPS,但内部请求仍用HTTP。

第一步,确认Google负载均衡器已经开启X-Forwarded-Proto头的传递——这是关键,不然WP识别不了外部的HTTPS请求。

然后修改wp-config.php,在原来的WP_HOME/SITEURL配置前加这段代码:

// 识别负载均衡器传过来的HTTPS标识
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
    $_SERVER['HTTPS'] = 'on';
    $_SERVER['SERVER_PORT'] = 443;
}

// 现在可以安全地把地址改成HTTPS了
define( 'WP_HOME', 'https://example.com' );
define( 'WP_SITEURL', 'https://example.com' );

这样WP对外生成的链接全是HTTPS,内部请求服务器的时候还是用HTTP,不会崩溃。

2. 修复已上传媒体的HTTP链接

之前传的媒体还是HTTP地址,得批量改掉,两种方法选一个:

方法一:SQL批量替换(最快)

登录Bitnami的MySQL,用命令mysql -u root -p,密码在bitnami_application_password文件里。执行下面的SQL(把example.com换成你的域名):

UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://example.com', 'https://example.com');
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, 'http://example.com', 'https://example.com');
UPDATE wp_posts SET guid = REPLACE(guid, 'http://example.com', 'https://example.com');

⚠️ 执行前一定要备份数据库,别手抖改错了。

方法二:用WP钩子强制转HTTPS(不用碰数据库)

要是不想动数据库,就在wp-config.php末尾加这段代码:

// 强制媒体附件链接转HTTPS
add_filter('wp_get_attachment_url', function($url) {
    return str_replace('http://example.com', 'https://example.com', $url);
});
// 处理图片srcset里的HTTP链接
add_filter('wp_calculate_image_srcset', function($sources) {
    foreach ($sources as &$source) {
        $source['url'] = str_replace('http://example.com', 'https://example.com', $source['url']);
    }
    return $sources;
});

3. 可选:强制所有HTTP请求跳转到HTTPS

为了避免用户输入HTTP访问,给Web服务器加跳转规则:

如果你用Apache

编辑/opt/bitnami/apache/conf/vhosts/wordpress-vhost.conf,在<VirtualHost *:80>块里加:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^/(.*)$ https://%{SERVER_NAME}/$1 [R=301,L]

然后重启Apache:sudo /opt/bitnami/ctlscript.sh restart apache

如果你用Nginx

编辑/opt/bitnami/nginx/conf/vhosts/wordpress-vhost.conf,在server { listen 80; }块里加:

if ($http_x_forwarded_proto != "https") {
    return 301 https://$host$request_uri;
}

重启Nginx:sudo /opt/bitnami/ctlscript.sh restart nginx

4. 验证修复结果

  • 打开网站,查看页面源码里的资源链接是否全为HTTPS
  • 上传新图片,检查媒体库的链接是否为HTTPS
  • 用浏览器控制台的「安全」面板确认没有混合内容警告

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 08:15:31