php - Wordpress 站点同时为不同域的 http 和 https 提供服务

标签 php wordpress ssl amazon-cloudfront

我需要同时将我的 Wordpress 网站提供给 http://“特定域”和 https://“特定域”。我知道我可以像这样定义 wp 站点 url 和 wp 主页,

define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST']);

define('WP_HOME', 'http://' . $_SERVER['HTTP_HOST']);

但在我的情况下,由于在我的域上安装 SSL 证书后 Wordpress 中出现混合内容问题,我还需要加载 https://。实际上我正在为用户使用带有 SSL 证书的 Cloudfront。

如果我进一步解释,Cloudfront 的原始网站是没有 SSL 的同一个网站。比如,

Cloudfront 源网站:

http://subdomain.maindomain.com/ 

用户访问网站:

https://www.maindomain.com/

所以我需要使用具有两个不同域的 http 和 https 选项的同一个网站,如前所述。希望有好的解决方案来解决这个问题。

最佳答案

因为现在是 2018 年,使用完全 https 工作流不仅是有效的——甚至是正确的形式。此方法会将您现有的 http 文件重写为本地 https,从而避免对您的服务器进行任何重大重组。所以这里的额外好处是,您可以与任何“混合内容”问题吻别。

如果您还没有.htaccess 文件,请在html 根目录下创建一个。添加这些 rewrite 行:

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [L,NE,R=301]

如果您遇到任何问题,请告诉我。

关于php - Wordpress 站点同时为不同域的 http 和 https 提供服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50719278/

相关文章:

ssl - 无法对具有 Godaddy 域的 github 页面强制执行 https

java - 尝试从远程 SSL 地址下载和设置证书以进行 WebSocket 连接,但出现 "Signature does not match"异常

php - WooCommerce Checkout 上的高级自定义字段 ( ACF )

javascript - 使用 AJAX 传递变量并在其他页面上使用它

php - wordpress .po 文件中的#: (file, 行号) 行是否必要

php - WooCommerce 自定义 Ajax 添加到购物车 : How to set a custom price?

php - 来自 mySQL 的排行榜

php - PHP 中的冒号运算符

wordpress - 将 woocommerce 产品连接到帖子

python - Python 中的 SSLSocket 口令/密码