0%

wordpress | 多目录转向多域名

如何将 wordpress 多站点下子目录模式变为子域名模式。

编辑 wp-config.php 修改配置

1
define( 'SUBDOMAIN_INSTALL', false );

变成

1
define( 'SUBDOMAIN_INSTALL', true );

然后,找到之前的站点的设置。

然后修改相关的 url 就好了。

之前是 thlm.com/lumi 现在改成了 lumi.thlm.com

一般来说,信息里面改完后,设置里面会自动修改,但是,还是建议你检查一下。

一共修改 3 处地方,信息一处,设置两处。

一般来说,这样改完就没问题了,当然有的时候会出现缓存问题。

  • 登录账号后,有的主题不能显示后端

这里建议,先用其他浏览器用户或者清除完全部缓存后,尝试。

这里说一下,需要对 nginx 进行二级域名配置吗?

我尝试的情况是,不需要专门配置,保留原来的就行。

从子目录转向子域名的话,会出现之前的链接不能用,比如 thlm.com/lumi 变成了 lumi.thlm.com ,就会出现 404 或者其他页面(我在使用 onenav 主题作为主站的时候,出现访问之前的页面被主题劫持的现象)。

所以,这里用到了一个方案。

  • wordpress 中存放一个跳转页面
  • 修改 nginx

跳转页面

我是在 /var/www/wordpress/Static/tmp 放了一个叫做 lumi.html 的页面,内容是

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>lumi 主题站</title>
<h2>你好,lumi 主题站已经迁移到 https://lumi.thlm.com</h2>

<h2>页面自动跳转,请等待...</h2>
</head>
<body>

<script>
// 获取当前 URL
var currentUrl = window.location.href;

// 使用正则表达式提取非域名部分
var path = currentUrl.replace(/^.*\/\/[^\/]+/, '').replace(/^\/lumi/, '');

// 新域名
var newDomain = 'lumi.thlm.com';

// 拼接新的 URL
var newUrl = 'https://' + newDomain + path;

// 进行跳转
window.location.href = newUrl;
</script>

</body>
</html>

nginx 配置

1
2
3
4
5
6
7
8
9
10
11
server {
...
location /lumi {
alias /var/www/wordpress/Static/tmp;
index lumi.html;
try_files $uri $uri/ /lumi/lumi.html;
}

...
rewrite ^/(?!lumi)(.*)$ /index.php?$1 last;
}

关于为什么修改成这个样子,请参考

请我喝杯咖啡吧~