我使用nginx作为我的Web服务器,我编辑了配置文件以指向https,因此我将WordPress url设置更改为https,并将WordPress force ssl管理代码添加到我的wp配置文件中,但我一直遇到错误“This webpage has a redirect loop“”
WordPress wp-admin HTTPS重定向循环
你已经added $_SERVER[\'HTTPS\'] = \'on\';
to your wp-config.php?
您还应该使用WP Migrate DB 要从中迁移的插件http://yoursite.com
到https://yoursite.com
我也遇到了类似的问题,只是在我的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\';
根据建议in the Codex. 只有在负载平衡器(或防火墙)设置中启用了SSL直通时,才需要这样做。这意味着,虽然您可以通过TLS/SSL中的HTTP访问站点,但服务器接收的通信仅为HTTP。为了说明这一点,需要使用上面的标题,以便WordPress可以;设置(&Q);HTTPS收件人on
在$_SERVER
配置阵列。由于我还没有发表评论的特权,我会将此添加作为另一个答案:
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\';
然而,只有当我put it before everything else 在此文件中!这本书的另一个版本,只需将其添加到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\';
}
5年前的问题。。。
好的,在安装SSL证书并更改所有http
到https
使用wp cli。找到pharhere.
我尝试了各种配置,但似乎都无法解决此问题,除非我设置此选项:
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单元。。。如果有人知道为什么会这样,请告诉我
事实上我有这个问题,解决起来很容易,也很尴尬。不知何故,在webhost上,我的wp admin文件夹被删除,因此没有wp admin出现相同的错误消息。
经过数小时的测试,我看到了很多不同的方法,当下载并再次上传时,一切正常。
伙计们,可以这么简单。
当我在Azure webapp服务Linux上托管我的站点时,我也遇到了同样的问题。
尝试此插件。当它激活时要小心,它会工作。https://wordpress.org/plugins/jsm-force-ssl/
该插件使用本机WordPress过滤器,而不是PHP的输出缓冲区,以实现最大的可靠性、性能和缓存兼容性(该插件不影响缓存性能),以及301个永久重定向以实现最佳SEO(从HTTP移动到HTTPS时,301个重定向被视为最适合SEO)。
支持大型托管环境的代理/负载平衡变量:
HTTP\\u X\\u转发\\u协议HTTP\\u X\\u转发\\u SSL要求:
您的web服务器必须配置SSL证书并能够处理HTTPS请求。
只需激活插件,即可完成:
没有需要调整的插件设置,也没有对WordPress配置进行任何更改-只需激活或停用插件即可启用/禁用过滤器和动态重定向。
我遇到了同样的问题,所以经过数小时的研究和调整后,我让它开始工作。我会分享我所做的一切,因为我不确定他们是否都有关联。
首先,我在cpanel上托管我的wordpress网站,所以我在cpanel上使用Softaculous工具升级我的wordpress版本。
其次,我升级了wordpress数据库。
(我注意到我的网站根文件夹中的.htaccess文件被更新为RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
)
然后我检查了。我的wp admin文件夹的htaccess文件然后我看到以下命令:
Order Allow,Deny
Deny from all
我去阅读wordpress website 这些命令旨在阻止web访问该文件夹中的文件,但这不是我需要的行为(我想)所以我把它们注释掉了,我可以加载我的管理部分。
仅将CloudFlare配置为https并在wp配置集中配置
define(\'FORCE_SSL_ADMIN\', false);
define(\'FORCE_SSL_LOGIN\', false);