我通过 EC2 实例托管 Wordpress,来自域的流量通过具有 ACM 颁发证书的 ALB 路由。
我一直在努力解决“混合内容错误”,这导致我的网站主题/样式在通过域和 ALB 连接时无法显示。直接连接到 EC2 公共 IP 时,一切都会按预期显示。为了解决 HTTP/HTTPS 混合内容错误,我安装了 SSL 不安全内容插件,该插件解决了混合内容错误消息,但提出了这个新问题。
当从 Route53 域名访问指向 ALB 的页面时 - 这些是我在控制台中遇到的错误。
"DOMAIN_NAME"/:29
GET https://"EC2_Public_IP"/wp-includes/css/dist/block-library/style.min.css?ver=6.4.2 net::ERR_CONNECTION_REFUSED
"DOMAIN_NAME"/:41
GET https://"EC2_Public_IP"/wp-content/themes/generatepress.3.3.1/generatepress/assets/css/main.min.css?ver=3.3.1 net::ERR_CONNECTION_REFUSED
还有一些其他具有不同索引的类似错误,以及一个带有下拉菜单的单独错误。
(index):13
GET https://"EC2_Public_IP"/wp-includes/js/wp-emoji-release.min.js?ver=6.4.2 net::ERR_CONNECTION_REFUSED
t @ (index):13
(anonymous) @ (index):13
Promise.then (async)
(anonymous) @ (index):13
(anonymous) @ (index):13
我尝试删除插件并通过其他方式修复混合内容错误,但没有成功。希望这里有人可以帮助我进一步深入了解这一点。
当使用 HTTP 而不是 HTTPS 加载某些静态资源(例如 CSS 文件、JavaScript 和图像)时,会出现混合内容错误。
在 WordPress 管理面板中,导航至
Settings > General
并
确保 WordPress 地址和站点地址都是
配置为使用 https://
。
http://
的静态内容(例如帖子、CSS 文件、图像等)中的
URL 需要更新为https://
以确保安全
连接。您可以使用像Better Search Replace这样的插件来
找到所有出现的 http://
并将其替换为 https://
在您的 WordPress 数据库中。
在
wp-config.php
中,您可以使用以下行强制使用 HTTPS:
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS']='on';