如何更改 WordPress 后台管理面板域名

以本站 “www.draftposts.com” 为例,预期结果是把 WordPress 后台管理面板 (“www.draftposts.com/wp-admin/”) 的域名换成另外一个(比如改成 “admin.draftposts.com/wp-admin/”)。

主要通过两部分来实现。

  1. 给新域名添加 Web 服务器配置文件
  2. 修改 “wp-config.php” 文件

我们的 Web 服务器是 Nginx。简单起见,可以直接把 “www.draftposts.com” 的配置文件复制一份,把副本的 “server_name” 改成 “admin.draftposts.com”。

例如,原配置是:

server {
    server_name www.draftposts.com;
    root /var/www/www.draftposts.com;

    index index.php;

    # Additional rules ...
}

复制这份配置,修改 “server_name”,修改后的配置为:

server {
    server_name admin.draftposts.com;
    root /var/www/www.draftposts.com;

    index index.php;

    # Additional rules ...
}

注意,我们只修改了 “server_name” 部分,其他部分(比如 “root” 配置)都未修改。如果你的网站使用 SSL/TLS,可能还需要修改 “ssl_certificate” 配置和 “ssl_certificate_key” 配置。

修改完配置文件后,用以下命令让 Nginx 测试新的配置并且加载新的配置:

nginx -t && nginx -s reload

如果没有错误,那么 “admin.draftposts.com” 现在就应该可以访问了。不过 WordPress 仍然会尝试跳转到 “www.draftposts.com”。我们需要修改 “wp-config.php” 文件,具体而言,定义 “WP_SITEURL” 常量。

把以下内容添加到 “wp-config.php”:

if ( isset( $_SERVER['SERVER_NAME'] ) && 'admin.draftposts.com' === $_SERVER['SERVER_NAME'] ) {
    define( 'WP_SITEURL', 'http://' . $_SERVER['SERVER_NAME'] );
}

用你自己的域名替换 ‘admin.draftposts.com’。如果你使用 SSL/TLS,还要把 “http://” 修改为 “https://”。

现在就能通过 “admin.draftposts.com/wp-admin/” 访问 WordPress 的后台管理面板了,符合预期目标。


为什么你要这么做?

我这样做是为了把主站和管理站点分开,这样就可以在专门为管理站点采取一些额外安全措施的同时不引入太多麻烦。

这么做可能对于那些“单服务器无法满足性能需求”的 WordPress 站长也有帮助。


PHP 代码根据 xiidea 在 StackExchange 上的回答修改而来。