#1 楼
您已将$_SERVER['HTTPS'] = 'on';
添加到wp-config.php吗?还应该使用WP Migrate DB插件从
http://yoursite.com
迁移到https://yoursite.com
#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配置进行任何更改—只需激活或停用
插件以启用/禁用过滤器和动态重定向。
评论
为此,我将给您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