WordPress,nginx代理和子目录:wp-login.php重定向到域

Dom*_*omi 8 php wordpress redirect nginx

在我的NGINX配置中,WordPress博客位于私人服务器上.我的NGINX公共服务器代理https://www.example.com/blog/的私人服务器内容.

location ^~ /blog/ {    # A "subdirectory", hiding a proxied server

    proxy_pass              http://192.168.0.5:80/;    # The blog resides in the 
                                                       # private's web root, 
                                                       # not in a subdirectory
    proxy_set_header        Host $host;
    proxy_set_header        X-Real-IP $remote_addr;
    proxy_redirect          off;
}
Run Code Online (Sandbox Code Playgroud)

在调用域和子目录时,博客完美呈现.引发wp-login 不会生成重定向 GET字段.

https://www.example.com/blog/wp-login.php

我的siteurl和我的home变量都设置为带子目录的域.

但是,成功登录后,我可能会看到仪表板,但浏览器中的URL会被重写为https://www.example.com/wp-admin,从而导致使用仪表板时出现问题.

虽然博客位于代理私有服务器上,但如何配置WP以重写URL到子目录?

(服务器中的子目录是否必须对称?)

Buk*_*kky 16

我也遇到了同样的问题,我找到了解决方法,解决了问题,将下面的代码添加到wp-config.php

$_SERVER['REQUEST_URI'] = str_replace("/wp-admin/", "/blog/wp-admin/",  $_SERVER['REQUEST_URI']);
Run Code Online (Sandbox Code Playgroud)

  • 救星。谢谢你! (2认同)
  • 谢谢你,谢谢你,谢谢你 (2认同)

Ric*_*ith 11

WordPress使用两个变量来定义它的托管位置:WP_HOMEWP_SITEURL.两者都可以使用仪表板设置,但我更喜欢将它们设置为wp-config.php:

define( 'WP_SITEURL', 'https://www.example.com/blog' );
define( 'WP_HOME', 'https://www.example.com/blog' );
Run Code Online (Sandbox Code Playgroud)

通常设置一个绝对URL(如上所述),其中包括方案和主机名,但我喜欢在反向代理后操作时使用相对URL,如下所示:

define( 'WP_SITEURL', '/blog' );
define( 'WP_HOME', '/blog' );
Run Code Online (Sandbox Code Playgroud)

您可以继续在私有服务器的根目录中运行WordPress(假设不直接访问它).将私有服务器向下移动一级会稍微复杂一些,并且需要稍微更改两台服务器上的Web服务器配置.