本地Docker部署WordPress访问自定义域名自动跳转HTTPS问题求助
解决方案
问题根源
你遇到的问题由两个配置错误共同导致:
- 手动定义的
WP_HOME和WP_SITEURL未携带实际访问的8080端口,和访问地址不一致触发WordPress自动重定向 WORDPRESS_CONFIG_EXTRA中插入的配置加载顺序早于镜像自带的反向代理HTTPS判断代码,你设置的$_SERVER['HTTPS'] = 'off'会被后续镜像逻辑覆盖,并非PHP不允许该赋值操作
修复步骤
1. 修正站点地址配置
将WORDPRESS_CONFIG_EXTRA中的WP_HOME和WP_SITEURL修改为和实际访问地址完全一致的格式,补全8080端口:
WORDPRESS_CONFIG_EXTRA: | define('WP_HOME', 'http://wpsite.local:8080'); define('WP_SITEURL', 'http://wpsite.local:8080');
2. 修复HTTPS设置不生效问题
选择以下任意一种方式即可:
方式一(直接修改compose配置):在
WORDPRESS_CONFIG_EXTRA末尾补充覆盖逻辑,利用镜像判断的规则强制关闭HTTPS:WORDPRESS_CONFIG_EXTRA: | define('WP_HOME', 'http://wpsite.local:8080'); define('WP_SITEURL', 'http://wpsite.local:8080'); // 本地无反向代理时强制关闭HTTPS,覆盖镜像默认设置 if (!isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) { $_SERVER['HTTPS'] = 'off'; }方式二(更稳妥,无加载顺序问题):通过必载插件(mu-plugin)强制设置
在本地项目根目录新建mu-plugins/fix-https.php文件,内容如下:<?php $_SERVER['HTTPS'] = 'off';然后在docker-compose.yml的web服务volumes配置中新增挂载规则:
volumes: - ./wordpress:/var/www/html:Z - ./secrets:/secrets:Z - ./mu-plugins:/var/www/html/wp-content/mu-plugins:Z
3. 重启容器生效
修改完配置后执行以下命令重启服务,清除浏览器缓存后即可正常访问http://wpsite.local:8080:
docker-compose down && docker-compose up -d
内容的提问来源于stack exchange,提问作者Mehdi Haghgoo
相关产品推荐
相关产品推荐

