WordPress wp-admin https重定向循环


60

我使用nginx作为我的网络服务器,并且我已经编辑了配置文件以指向https,因此我将WordPress网址设置更改为https,并且还将WordPress force ssl管理员代码添加到了我的wp-config文件中,但是我一直遇到错误“ 该网页具有重定向循环

在此处输入图片说明

Answers:


98

您已添加$_SERVER['HTTPS'] = 'on';到wp-config.php吗?

您还应该使用WP Migrate DB插件从迁移http://yoursite.comhttps://yoursite.com


9
为此,我将给您1000票!
Sheharyar '16

5
由于某些原因,通常不包括这一重要步骤。
塔尼亚·拉斯西亚

4
谢谢!这可能使我节省了更多的时间来试图弄清为什么管理区域无法使用SSL。
大锤2013年

4
哇!$ _SERVER ['HTTPS'] ='开启'; 救了我!
PJunior

2
为什么这样做?我已经使用过Interconnect的S&R工具。我应该已经在数据库中使用了正确的协议。
杰夫

51

我遇到了类似的问题,只是将以下代码段添加到了我的代码中wp-config.php

/** SSL */  
define('FORCE_SSL_ADMIN', true);  
// in some setups HTTP_X_FORWARDED_PROTO might contain  
// a comma-separated list e.g. http,https  
// so check for https existence  
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)  
    $_SERVER['HTTPS']='on';

法典建议。仅在您的负载均衡器(或防火墙)设置中启用了SSL直通的情况下才需要这样做。这意味着,虽然您可以在TLS / SSL中通过HTTP访问站点,但是服务器接收的通信仅是HTTP。为了解决这个问题,需要上面的标头,以便WordPress可以on$_SERVER配置数组中“设置” HTTPS为。


2
对于使用负载均衡器的任何人来说,这都是一个很好的解决方案。我在使用Dokku(Heroku的主机自身克隆)进行托管,并且在静态资源加载和wp-admin重定向循环方面遇到了问题。Dokku还执行nginx反向代理,以将传入的443通信转发到端口80,这解决了该问题。
ZachM

3
我只需要输入,$_SERVER['HTTPS'] = 'on';因为HTTP_X_FORWARDED_PROTO甚至不在客户端服务器上的设置中:
Tom Roggero

1
使用AWS负载均衡器时,完美解决了我的问题。
乔什(Josh)

这也解决了“重定向过多问题”,因为我的站点位于AWS上的负载均衡器后面。
vo

对于这种情况,我认为向.htaccess文件添加修复程序很重要:stackoverflow.com/questions/36748110/…,请检查@ harshal-lonare答案。
古斯塔沃·詹切

11

由于我还没有评论权限,因此我将发布此附加内容作为另一个答案:

Elias提出的解决方案向,添加了以下内容wp-config.php

/** SSL */  
define('FORCE_SSL_ADMIN', true);  
// in some setups HTTP_X_FORWARDED_PROTO might contain  
// a comma-separated list e.g. http,https  
// so check for https existence  
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)  
    $_SERVER['HTTPS']='on';

但是,仅当我将其放在此文件中的所有其他内容之前,它才对我有用


1
这正是我的问题所在。我把这些放在文件的末尾,它没有用。我准备从头开始重建我的网站。将它们移至顶部和底部,已修复问题。谢谢谢谢!!
Dean Poulin

如果您在Cloudflare之类的代理DNS后使用灵活的SSL,则此解决方案非常有用。谢谢。
Stefan P

确认工作。非常感谢您,它解决了API和IFrame的许多问题。该网站未启用HTTPS,但是我们需要一些页面才能启用它。WordPress默认应将此设置为……
Andy

仅供参考-该代码可以在任何位置,但必须在require_once( ABSPATH . 'wp-settings.php' );文件末尾之前。
Damodar Bashyal

7

书籍的另一个版本,只需将其添加到wp-config.php的顶部

原因是可能存在负载平衡器或某些未传递正确的https值的东西,因此您必须从其他地方获取它并伪造为wordpress。

if ( (isset($_SERVER['HTTP_X_FORWARDED_PORT'] ) && ( '443' == $_SERVER['HTTP_X_FORWARDED_PORT'] ))
    || (isset($_SERVER['HTTP_CF_VISITOR']) && $_SERVER['HTTP_CF_VISITOR'] == '{"scheme":"https"}')) {
    $_SERVER['HTTPS'] = 'on';
}

0

其实...我遇到了这个问题,解决起来很容易而且令人尴尬。不知何故,在webhost上,我的wp-admin文件夹被删除了,因此没有wp-admin出现此相同的错误消息。

经过数小时的测试,我看到了许多不同的方式,再次下载并上传后,一切正常。

伙计们,可以这么简单。


0

5岁的问题...

好吧,我有这个错误,我安装SSL证书和更改都链接后httphttps使用中发现的WP-cli.phar 这里

我尝试了各种配置,除非我进行了以下设置,否则似乎都无法解决此问题:

define('FORCE_SSL_ADMIN', true); 
define('FORCE_SSL_LOGIN', true);

对此:

define('FORCE_SSL_ADMIN', false);
define('FORCE_SSL_LOGIN', false);

它允许我访问登录页面,但随后无法实际登录。我尝试了两个答案,但不幸的是,它还是没有帮助,直到我做了以下更改:

/** SSL */   
define('FORCE_SSL_ADMIN', true);
// in some setups HTTP_X_FORWARDED_PROTO might contain
// a comma-separated list e.g. http,https   
// so check for https existence   
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== true)  
     $_SERVER['HTTPS']='on';

由于某些原因,我不知道为什么-我不得不更改

!==错误

!==真

我正在将nginx作为主机运行,并向nginx单元提供反向代理...如果有人知道为什么这样做,请告诉我

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.