解决WordPress后台重定向过多问题

  • 酉灿
  • WordPress
  • Jul 27, 2021

网站刚配置好https就碰见了一个问题即登录WordPress后台的时候提示重定向的次数过多,网上找了很多办法解决这个问题,比如下面这个方法

如果使用云服务器配置https后wordpress后台无法登录提示将您重定向的次数过多,只需要在网站根目录的wp-config.php开头加入以下代码,即可完美解决此问题:

$_SERVER['HTTPS'] = 'on';
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

又或者这个方法
首先使用phpmyadmin或其他管理工具将数据库中找到wp-options数据表,将里面option_name为siteurl和home的option_value值中的网址的http替换为https;

然后继续修改wp-includes/load.php这个文件,搜索is_ssl找到对应的函数,将$_SERVER[‘HTTPS’]修改为$_SERVER[“HTTP_FROM_HTTPS”](修改文件前请注意备份)。


或将此函数修改为:

function is_ssl() {
	if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on'){
		return true;
	}
	elseif (isset($_SERVER["HTTP_FROM_HTTPS"])&&$_SERVER["HTTP_FROM_HTTPS"]=='on'){
		return true;
	}
	elseif (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'){
		return true;
	}
	else{
		return false;
	}
}

这两种方法或许对某种情况下有效,但我在修改过之后发现没有用,最终的我的解决方案是修改了伪静态,我使用的是Nginx服务器,只需要把伪静态规则修改为如下规则即可:

location / {
  if (-f $request_filename/index.html){
          rewrite (.*) $1/index.html break;
      }
  if (-f $request_filename/index.php){
          rewrite (.*) $1/index.php;
      }
  if (!-f $request_filename){
          rewrite (.*) /index.php;
      }
  }
打赏