WordPress,nginx代理和子目录:wp-login.phpredirect到域

在我的NGINXconfiguration中,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; } 

该博客完美呈现调用域和子目录。 启动wp-login 不会生成redirect GET字段。

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

我的siteurl和我的主variables都设置为子目录的域。

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

尽pipe博客位于代理专用服务器上,但是如何将WPconfiguration为将URL重写为子目录?

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

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

 $_SERVER['REQUEST_URI'] = str_replace("/wp-admin/", "/blog/wp-admin/", $_SERVER['REQUEST_URI']); 

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

 define( 'WP_SITEURL', 'https://www.example.com/blog' ); define( 'WP_HOME', 'https://www.example.com/blog' ); 

通常情况下,设置绝对URL(如上),其中包括方案和主机名,但我更喜欢在反向代理背后使用相对URL,如下所示:

 define( 'WP_SITEURL', '/blog' ); define( 'WP_HOME', '/blog' ); 

你可以继续在你的私人服务器的根目录下运行WordPress(假设它不被直接访问)。 将私有服务器向下移动一层会稍微复杂一些,并且两个服务器上的Web服务器配置都要稍微改变。