如何构建 wordpress 页面中的资产链接?移动到 docker 后,我得到的是 http 而不是 https

How do asset links in wordpress page get built? I get http rather that https after moving to docker

我支持移动到 docker (docker-compose) 一个已经在 cPanel 中“正常”工作的 wordpress 网站。我说“正确”是因为“站点 url”和“wordpress 站点 url”都报告 http:// 而不是 https.

在 cPanel 设置中,您可以访问 httphttps 以及任何内部 link 到 jscss 使用 https。在移动到 traefik 负载平衡器后面的 docker 之后,我使用 http 获得了包含所有 link 的页面。这显然破坏了安全性,网站无法使用。

用于构建资产 link 的机制是什么?它是否使用一些可以不同设置的变量?我的 docker 有 apache,我正在使用相同的 .htaccess(至少我正在使用 cPanel 备份中的内容...)。

如果我强制 https/wp-admin 变得无法访问...目前 traefik 提供使用 httphttps.

请求的正确资源

编辑:添加

$_SERVER['HTTPS']='on';
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true); 

确实 将大多数内部 link 转为 https,但 /wp-admin 变得无法访问(“您不允许访问该页面”)。例如,它通过 http.

加载 /wp-includes/js/jquery/jquery.js

为什么 任何提示表示赞赏...

在您的 wordpress 中,一般设置将站点的 url 和 wordpress 的 url 都传递给 https,然后您将不得不使用插件或从它的 htaccess 强制执行资产后仅使用 https 加载,其他文件应在 https

中加载

我使用 ngrok 隧道连接到我的 localhost,我能够成功 运行 我的环境超过代理 https 的唯一方法是转换 wordpress 永久链接 url 相对 url 使用...

https://wordpress.org/plugins/relative-url/

该插件已过时 2 年,但仍然可以正常工作,并允许我通过 https 隧道连接到 localhost 到 运行。便于 localhost https 端点访问(无需强制在 wp-config.php 中定义 home/urls)

我通过重新排列 wp-config.php 中的设置顺序解决了这个问题。

wp-configi.php 不仅仅是一个配置文件,顾名思义。您需要在最后一行之前设置_SERVER['HTTP']

$_SERVER["HTTPS"] = "on";
require_once(ABSPATH . 'wp-settings.php');

(感谢朋友 Dario 的帮助)