WordPress + CloudFront 灵活 SSL 最终进入重定向循环 (https)
Posted
技术标签:
【中文标题】WordPress + CloudFront 灵活 SSL 最终进入重定向循环 (https)【英文标题】:WordPress + CloudFront Flexible SSL ends up in redirect loop (https) 【发布时间】:2015-01-27 09:40:40 【问题描述】:在 CloudFront 灵活 SSL 后面设置时通过 https 访问管理员时遇到问题。
通过 http 访问时,管理员工作正常,但一旦我更改为安全 https,它就会进入重定向循环。
我将以下行添加到wp-config.php
以在管理员中强制使用 SSL。
define('FORCE_SSL_ADMIN', true);
【问题讨论】:
我们知识库中关于redirect loops and Flexible SSL 的信息也应该有所帮助。 【参考方案1】:这是因为 CloudFlare 的灵活 SSL 作为反向代理运行并通过 http
连接到 WordPress 安装。 Wordpress 认为您通过http
连接并重定向到https
资源。浏览器从 CloudFlare 请求 https
资源,CloudFlare 再次通过 http
从 WordPress 服务器请求资源,导致另一个重定向。
幸运的是,有一个解决方案。 CloudFlare 发送一个 http 标头 X-FORWARDED-PROTO,它是从浏览器到 CloudFlare 服务器的连接中使用的协议。我们可以使用它来告诉 WordPress,即使请求是通过 http
发生的,浏览器的链接也超过了 https
。
在wp-config.php
文件中添加以下行:
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') $_SERVER['HTTPS']='on';
上一行在下一行之前也很重要:
require_once(ABSPATH . 'wp-settings.php');
进行修改后,重定向循环将停止,您将能够再次使用管理员。
这最终适用于所有反向代理服务器,而不仅仅是 CloudFlare。
【讨论】:
谢谢!对我来说最关键的部分是把它放在上面require_once(ABSPATH . 'wp-settings.php');
在我的情况下,这并没有解决问题 - 然后我意识到我还需要使云端无效,因为它已经缓存了 301【参考方案2】:
在我的情况下,我们遇到了这个问题,因为我配置的 CloudFront 源不正确。
cloudfront-> origin -> Origin Protocol Policy -> Match Viewer
在此设置后我的网站工作正常
【讨论】:
【参考方案3】:就我而言,另一个问题来源是(我知道听起来很傻)DefaultRootObject。
我在我的 CloudFront 和 WordPress 上遇到了这个错误,这是我的太多重定向噩梦的问题。我发布这个是因为有人像我一样陷入了同样的愚蠢错误。
干杯
【讨论】:
以上是关于WordPress + CloudFront 灵活 SSL 最终进入重定向循环 (https)的主要内容,如果未能解决你的问题,请参考以下文章
将 Amazon S3 存储桶和 Cloudfront 与 SSL Wordpress 站点一起使用不会提供静态文件
Cloudfront + Woocommerce - 购物车未更新
将 CloudFront 与没有负载均衡器的单个 EC2 实例一起使用