如何解决在反向代理服务器后登录WordPress尝试导致重定向的问题?
如何解决在反向代理服务器后登录WordPress尝试导致重定向的问题?
我终于成功通过反向代理使我的WordPress页面可以通过https访问/强制使用https,感谢这个答案。\n但现在我无法再进入后台了。任何尝试登录都只会重定向到登录页面,而实际上并没有登录,出现以下错误消息:\n错误:您的浏览器阻止或不支持Cookie。您必须启用Cookie才能使用WordPress。
\n我尝试通过更改WP_HOME
和WP_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页面,没有插件,使用默认主题。
在一个反向代理后面登录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登录尝试导致反向代理后重定向的问题。