WordPress + CloudFront Flexible SSL最终进入重定向循环(https)



在 CloudFront 灵活 SSL 后面设置管理员时,通过 https 访问管理员时遇到问题。

管理员在通过 http 访问时工作正常,但是一旦我更改为安全 https,它就会进入重定向循环。

我正在wp-config.php中添加以下行以在管理员中强制使用 SSL。

define('FORCE_SSL_ADMIN', true);
这是因为

CloudFlare的Flexible SSL作为反向代理运行,并通过http连接到WordPress安装。 WordPress认为您正在通过http进行连接,并重定向到https资源。 浏览器从CloudFlare请求https资源,CloudFlare再次从WordPress服务器请求http资源,导致另一个重定向。

幸运的是,有一个解决方案。 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。

就我而言,我们遇到了这个问题,因为我配置了 CloudFront 源不正确。

cloudfront-> origin -> Origin Protocol Policy -> Match Viewer 

设置后,我的网站工作正常

我而言,问题的另一个来源是(我知道听起来很愚蠢)DefaultRootObject。

我在CloudFront和WordPress上遇到了这个错误,这是我的重定向太多噩梦的问题。我发布是因为有人像我一样陷入了同样的愚蠢错误。

干杯

最新更新