如何解决在反向代理服务器后登录WordPress尝试导致重定向的问题?

7 浏览
0 Comments

如何解决在反向代理服务器后登录WordPress尝试导致重定向的问题?

我终于成功通过反向代理使我的WordPress页面可以通过https访问/强制使用https,感谢这个答案。\n但现在我无法再进入后台了。任何尝试登录都只会重定向到登录页面,而实际上并没有登录,出现以下错误消息:\n错误:您的浏览器阻止或不支持Cookie。您必须启用Cookie才能使用WordPress。\n我尝试通过更改WP_HOMEWP_SITEURL来解决此问题,结果导致我之前的问题出现无限重定向循环,我的网站根本无法访问。\n我对.htaccess文件的更改似乎没有任何效果,这可能是因为代理已经强制(重定向到)https。\n有人知道为什么会出现这种情况以及如何解决吗?\n提前感谢!\n链接答案中的我的配置:\nwp-config:\n

define('WP_HOME','//'. $_SERVER['SERVER_NAME']);
define('WP_SITEURL','//'. $_SERVER['SERVER_NAME']);
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
$_SERVER['HTTPS']='on';

\n.htaccess:\n

# http to https
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule . https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]

\n除此之外,这是一个干净的WordPress页面,没有插件,使用默认主题。

0
0 Comments

在一个反向代理后面登录WordPress时,会出现重定向问题。这个问题的原因是登录尝试会导致WordPress将HTTP请求重定向到反向代理后面的URL,从而导致一些错误。

为了解决这个问题,可以采取以下方法:

1. 首先,我们需要确定当前请求的相关协议。可以通过检查`$_SERVER['HTTP_X_FORWARDED_PROTO']`变量来判断是否使用了HTTPS协议。如果使用了HTTPS协议,则将`$_SERVER['HTTPS']`设置为'on'。然后,我们可以根据当前协议设置`$protocol`变量的值,如果使用了HTTPS协议或端口为443,则设置`$protocol`为"https",否则设置为"http"。

2. 接下来,我们需要使用动态协议设置`WP_SITEURL`和`WP_HOME`的值。我们可以使用`$_SERVER['HTTP_HOST']`变量获取当前请求的主机名,并将其与`$protocol`拼接起来作为`WP_SITEURL`和`WP_HOME`的值。

通过以上步骤,我们可以解决WordPress登录尝试导致反向代理后重定向的问题。

完整的解决方法如下所示(与链接答案略有不同):

// 识别当前请求的相关协议
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) {
    $_SERVER['HTTPS'] = 'on';
}
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https" : "http";
// 使用动态协议设置SITEURL和HOME
define('WP_SITEURL', $protocol . '://' . $_SERVER['HTTP_HOST']);
define('WP_HOME', $protocol . '://' . $_SERVER['HTTP_HOST']);

通过以上配置,我们成功解决了WordPress登录尝试导致反向代理后重定向的问题。

0