在 CloudFront Flexible SSL 背后设置时,通过 https 访问管理员时遇到问题。
管理员在通过 http 访问时工作正常,但一旦我更改为安全 https,它就会进入重定向循环。
我将以下行添加到 wp-config.php
以在管理员中强制使用 SSL。
define('FORCE_SSL_ADMIN', true);
最佳答案
这是因为 CloudFlare 的 Flexible SSL 作为反向代理运行并通过 http
连接到 WordPress 安装。 Wordpress 认为您正在通过 http
进行连接,并重定向到 https
资源。浏览器从 CloudFlare 请求 https
资源,CloudFlare 再次通过 http
从 WordPress 服务器请求资源,导致另一个重定向。
幸运的是有一个解决方案。 CloudFlare 发送一个 http header X-FORWARDED-PROTO,这是从浏览器到 CloudFlare 服务器的连接中使用的协议(protocol)。我们可以使用它来告诉 WordPress,即使请求是通过 http
发生的,浏览器的链接也是通过 https
的。
在 wp-config.php
文件中添加以下行:
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') $_SERVER['HTTPS']='on';
同样重要的是,上面一行出现在下面一行之前:
require_once(ABSPATH . 'wp-settings.php');
进行修改后,重定向循环将停止,您将能够再次使用管理员。
这最终适用于所有反向代理服务器,而不仅仅是 CloudFlare。
关于WordPress + CloudFront Flexible SSL 最终进入重定向循环 (https),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27193575/