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



#1 楼

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

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

评论


为此,我将给您1000票!

– Sheharyar
16年1月17日在21:56

由于某些原因,通常不包括这一重要步骤。

–塔尼亚·拉西亚(Tania Rascia)
16年1月27日在6:47

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

–八角锤
16年2月20日在17:42

哇! $ _SERVER ['HTTPS'] ='on';救了我!

– PJunior
17年2月3日在17:13

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

–杰夫
17年2月15日在20:28

#2 楼

我遇到了类似的问题,只是将以下代码段添加到了我的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配置数组中将HTTPS“设置”为$_SERVER

评论


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

– ZachM
16年6月6日在14:54

我只需要把$ _SERVER ['HTTPS'] ='on'放进去;因为HTTP_X_FORWARDED_PROTO甚至不在我客户端服务器的设置中:

–汤姆·罗格罗(Tom Roggero)
17年1月23日在17:11

使用AWS负载平衡器时,完美解决了我的问题。

–乔什
17年4月12日在15:27

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

–voam
17年11月1日在19:24

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

–古斯塔沃·詹奇(Gustavo Jantsch)
18-10-5在15:29

#3 楼

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

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';


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

评论


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

–迪恩·普兰(Dean Poulin)
18年2月3日,在2:19

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

– Stefan P
18年2月16日在5:44

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

–安迪
18年4月25日在14:25

仅供参考-该代码可以在任何地方,但需要在require_once(ABSPATH。'wp-settings.php')之前;在文件末尾。

–达摩达(Damodar Bashyal)
19-09-20在0:42



这行得通,谢谢

–穆罕默德·陶菲克(Mohammed Tawfik)
4月28日0:22

#4 楼

书籍的另一个版本,只需将其添加到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';
}


评论


刚刚使用此解决方案在pfsense防火墙上的HAProxy后面运行的WordPress 5.5.1安装中。列出的其他文件似乎无法正常工作,至少是开箱即用的,没有对HAProxy及其发送的标头进行一些调整。

–快速
9月24日4:37

除此以外,其他建议均无用。非常感谢🚀🚀🚀

–马布卜
11月16日17:26

#5 楼

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

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

检查一下,它可以这么简单。

#6 楼

5岁的问题...

好吧,我安装了SSL证书并使用此处找到的wp-cli.phar将所有http更改为https后,出现了此错误。

我尝试了各种配置,除非我对此进行了设置,但似乎没有一个解决方案:

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


对此:

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


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




!==
false


更改为


!==
true


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

评论


哦,为了F @!$,谢谢! 2020年,我们仍然必须爬网才能将SSL放在wordpress上,这是因为,以某种方式,最给定的答案不适用于无效的语句。再次感谢!

– EmmanuelBeziat
8月15日4:11

你试过我的答案了吗?而且这个空间是答案,不是问题

–提莫·霍维宁(Timo Huovinen)
9月24日17:41

#7 楼

当我将站点托管在Azure webapp服务Linux上时,我遇到了同样的问题。

尝试使用此插件。请注意它处于活动状态时要起作用。
https://wordpress.org/plugins/jsm-force-ssl/


该插件使用本机WordPress过滤器,而不是PHP的输出
缓冲区,以实现最大的可靠性,性能和缓存兼容性
(此插件不影响缓存性能),以及301
永久重定向,以实现最佳SEO(301重定向被认为是最佳
从HTTP转移到HTTPS时用于SEO)。

大型主机的代理/负载均衡变量
环境:

HTTP_X_FORWARDED_PROTO HTTP_X_FORWARDED_SSL要求:

您的Web服务器必须配置有SSL证书,并且能够
处理HTTPS请求。 😉

只需激活插件即可完成:

没有要调整的插件设置,也没有对
WordPress配置进行任何更改—只需激活或停用
插件以启用/禁用过滤器和动态重定向。