In my NGINX configuration, a WordPress blog is on a private server. My NGINX public server proxies the private server's content for 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;
}
The blog is perfectly rendered on calling the domain and subdirectory. Bringing up wp-login does not generate a redirect GET field.
https://www.example.com/blog/wp-login.php
My siteurl and my home variables are both set to the domain with subdirectory.
However, after a successful login, I may see the dashboard, but the URL in my browser gets rewritten to https://www.example.com/wp-admin , causing problems on using the dashboard.
How do I configure WP to rewrite the URL to the subdirectory, although the blog is on a proxied private server?
(Do the subdirectories in the servers have to be symmetrical?)
我也遇到了同样的问题,我找到了解决方法,要解决此问题,请在wp-config.php中添加以下代码
$_SERVER['REQUEST_URI'] = str_replace("/wp-admin/", "/blog/wp-admin/", $_SERVER['REQUEST_URI']);
WordPress uses two variables to define where it is hosted: WP_HOME
and WP_SITEURL
. Both can be set using the dashboard, but I prefer to set them in wp-config.php
:
define( 'WP_SITEURL', 'https://www.example.com/blog' );
define( 'WP_HOME', 'https://www.example.com/blog' );
It is usual to set an absolute URL (as above) which includes scheme and host name, but I prefer to use a relative URL when operating behind a reverse-proxy, like this:
define( 'WP_SITEURL', '/blog' );
define( 'WP_HOME', '/blog' );
You can probably continue to run WordPress in the root of your private server (assuming it isn't accessed directly). Moving the private server down one level is a little more complicated and involves the web server configuration on both servers to be changed a little.
You have to add the following two rewrites to your wp-config.php<\/strong> :
$_SERVER['REQUEST_URI'] = str_replace("/wp-admin/", "/blog/wp-admin/", $_SERVER['REQUEST_URI']);
$_SERVER['REQUEST_URI'] = str_replace("/wp-login.php", "/blog/wp-login.php", $_SERVER['REQUEST_URI']);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.