在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
在此设置后我的网站工作正常