WordPress 开启子目录模式多站点可绑定独立域名

博客用的 wordpress 设置了一个多站点,但一直用的是子域名模式的多站点,之前觉得域名多,子域名用起来好用,现在研究了一下 wordpress 多站点,还是觉得子目录比较方便。

毕竟不是所有新站点都需要个独立域名,如果没有设置泛域名解析,每次配置域名还要设置服务器配置,dns解析。即便是做了泛域名解析,现在还是https 的时代,还要配置一套ssl证书,没钱买泛域名ssl证书的烦恼就是需要每个域名都单独配置站点、申请和部署ssl域名证书,自动的ssl申请模式也需要折腾一个独立域名配置出来,域名和站点搞了一堆,有时只是为了做个测试,完全失去了折腾的乐趣。

这次有个新站点想弄一下,尝试了一下 wordpress 多站点,使用子目录方式的配置,简单测试,发现一次配置完成以后,后续开子站点测试也变得简单多了,与建立cms个子目录速度差不多,跟主域名共ssl 证书,也不用担心各种插件和主题之间相互冲突了,只有需要绑定独立域名的时候才折腾一下域名的配置,这样也轻松了许多。

安装wordpress 然后开启 wordpress 多站点的子目录模式,wordpress多站点可以绑定独立域名配置折腾记录。

下载wordpress 最新版本:

https://wordpress.org/

安装lnmp环境:推荐直接lnmp或者宝塔之类的。

安装程序包:解析域名,创建虚拟机,创建数据库,安装wordpress略过。

安装完成以后,修改wordpress 的wp-config.php 文件:

增加:

define(‘WP_ALLOW_MULTISITE’, true);

然后重新登陆后台,在工具,配置网络中启用网络站点功能。

配图:域名设置(截图借用)

有些老站点无法启用子目录模式,会有提醒。

0

选择完以后会生成一段代码继续放到 wp-config.php 文件中。

配图:

0

然后就是安装官方提示设置你的伪静态规则。

nginx:

https://wordpress.org/support/article/nginx/

nginx静态规则设置,用官方的建议不太合适,在宝塔面板无法启用,需要配合nginx

和nginx-helper 插件使用,我在宝塔没试验成功。

搜索了一篇旧的设置还可以使用,所以就用了旧的规则,但这个规则写的很早,把很多文件都代理了,现在的ssl证书申请需要使用一些带点的文件夹,用这个规则也会被 index.php 代理,导致自动ssl证书验证会失败,我又改了一下,可以参考下我最后改完的。

WordPress 开启多站点(含Apache和Nginx伪静态规则)

https://www.wpdaxue.com/wordpress-multisite.html

这是我使用伪静态规则:

0
rewrite ^/([_0-9a-zA-Z-]+/)?wp-admin$ /$1wp-admin/ permanent;
if (-f $request_filename){
set $rule_2 1;
}

if (-d $request_filename){
set $rule_2 1;
}

if ($rule_2 = "1"){
#ignored: “-” thing used or unknown variable in regex/rew
}
rewrite ^/([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) /$2 last;
rewrite ^/([_0-9a-zA-Z-]+/)?(.*.php)$ /$2 last;
rewrite ^/([_0-9a-zA-Z-]+/) /index.php last;
#rewrite /. /index.php last;

如果是你自己搭建的nginx 服务,可以尝试按照官方设置的教程操作看看。

开启wordpress 的多站点功能官方文档:

创建网络之前:

https://wordpress.org/support/article/before-you-create-a-network/

创建网络:

https://wordpress.org/support/article/create-a-network/

多站点网络管理:

https://wordpress.org/support/article/multisite-network-administration/

多站点安装完了以后就可以创建站点测试了。

0

但都用子域名或者子目录方式访问,还是有些不灵活,还是想偶尔有些站点可以绑定自己的域名。这个时候可以使用 WordPress MU Domain Mapping 这个插件。

WordPress MU Domain Mapping 插件安装以后 需要将插件目录下的 /wp-content/plugins/wordpress-mu-domain-mapping/sunrise.php 复制到 /wp-content/sunrise.php 。

然后在 wp-config.php 文件中加入:

define( 'SUNRISE', 'on' );

然后去站点网络后台设置:Domain Mapping,主要设置一下功能,可以默认,然后把你的服务器ip和cname的指向域名可以加上。

0

要想给某个站点设置独立域名,在总站点的设置 Domains:独立域名。

0

理论上设置完还无法访问,需要你在服务器上接收这个域名的请求,类似在nginx 中加入一个新的虚拟机域名,目录指向wordpress 的根目录即可。

另外需要把主域名设置的配置伪静态规则给新域名设置一套相同的。

我在宝塔中直接添加域名修改目录到wordpress的目录,设置了相同的伪静态文件给他。

然后再把域名解析到服务器测试,应该就可以访问了。

关于ssl 的 访问需要在看情况配置,自行设置好证书即可。

最后的 wp-config.php 配置文件增加的内容如图:

类似这样子目录+独立域名的模式。

0