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


WordPress 3.0 以上的版本支持直接开启多站点模式,这样一来,你可以在一个后台切换多个站点进行管理。

最近打算折腾一个主题演示站,给每个主题使用独立的子站点来搭建演示,如果是 Apache 环境,配置就比较容易,但是小编使用的是 Nginx,花了大量的时间测试了 N 多网络上的伪静态规则,最终找到了完美的解决方法。下面就分享下 Linux 下 Apache 和 Nginx 两种环境开启多站点的方法。Windows 系统环境直接靠边站吧。

开启网络配置

在网站根目录下的 wp-config.php 添加:

define('WP_ALLOW_MULTISITE', true);

配置多站点模式

刷新网站后台,访问 工具 > 配置网络,根据自己的需要选择“子域名”或者“子目录”模式,然后点击“安装”:

只有新安装的 WordPress,并且绑定了域名,这时候才可以选择“子域名”模式。

如果你选择是的“子域名”,安装后,请将下面的代码添加到网站根目录下的 wp-config.php 下:

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', 'yourdomain.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

如果选择的是“子目录”,则添加:

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'yourdomain.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

添加伪静态规则

Apache 规则

如果你的服务器使用的是 Aache 环境,使用下面的代码替换网站根目录下的 .htaccess 里面的所有代码

子域名模式下的规则代码:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
 
# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
 
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

子目录模式下的规则代码:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
 
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
 
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]

Nginx 规则

假设你的网站为 yourdomain.com,那么你可以编辑这个配置文件:

vi /usr/local/nginx/conf/vhost/yourdomain.com.conf

在最后一个 } 的前面添加下面的代码:

#ignored: “-” thing used or unknown variable in regex/rew
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 /. /index.php last;

以上的规则对于 子域名 和 子目录 模式都正常使用,但是,如果你选择的是 子域名 模式,还需要找到:

server_name yourdomain.com;

添加一个泛域名 *.yourdomain.com,如下:

server_name yourdomain.com *.yourdomain.com;

保存文件,然后重启服务器(可以先尝试一下网站是否正常访问,我没有重启即可正常访问了):

/root/lnmp restart

然后在你的域名管理那里添加一条泛域名 *.yourdomain.com 解析到主机IP(或者分别解析你即将要使用的子域名到主机IP),这样一来,创建子域名站点时,就可以正常访问了。

宝塔面板

如果你使用的是宝塔面板,配置伪静态就更容易了。

添加泛域名时,只要在网站设置里添加即可。

伪静态规则直接在“伪静态”里搞就行了。

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

参考

<< WordPress Robots.txt文件配置及sitemap配置详解 WordPress网站如何关闭多站点模式 >>


没有账号? 忘记密码?

社交账号快速登录