有这么一个需求,客户需要一个宣传类型的网站,默认中文版,还要提供英文版(如中文版:abc.com,英文版abc.com/en),内容管理系统要求Wordpress。很多人都知道,wp是支持“站群”功能的,即多站点功能。但该功能并不能够在后台打开,而是需要用一行隐藏的“神秘代码”打开。本文就简单介绍一下如何为最新版的wordpress(wp)开启站群多站点功能。
首先在网站根目录的“wp-config.php”中添加一行神秘代码:
define('WP_ALLOW_MULTISITE', true); /*开启多站点*/
保存后,刷新网站后台,点击左侧“工具”菜单,子菜单中会多出来一个“配置网络”链接,点击进入。进入后首先让你选择站群子站点的模式,分别是“子域名”和“子目录”。简单说,子域名模式就是“二级域名模式”(如:en.abc.com);子目录模式就是最常见的如“abc.com/en”的格式。
注意:如果你访问当前网站的网址是带www的,在最新wordpress 6.0中,这里会提示你将系统入口改为不带www的,方便后期维护,我也建议您如此操作。在设置-常规 中修改网站地址和首页地址即可。
由于客户需要,我肯定选“子目录”模式,提交后页面会出现一段代码,要求你复制并粘贴到“wp-config.php”中:
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false); /*该参数可以在二级域名和子目录模式间切换,false为子目录*/
define('DOMAIN_CURRENT_SITE', 'abc.com'); /*示例域名*/
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
粘贴到wp-config.php后记得保存。然后就是很关键的一步。重新匹配相应的重写规则(Rewrite)。
如果你的webserver用的是阿帕奇Apache,重写规则会自动出现在页面上,复制粘贴到你的.htaccess中即可,代码如下。
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,页面上不会有现成的重写规则,你复制本文下面的规则粘贴到nginx配置中即可(如果你是宝塔面板,则需要粘贴进站点设置的“重写”规则中)。
# 重定向favicon,相当于禁用wp内置的do_favicon
rewrite ^/([_0-9a-zA-Z-]+/)?favicon.* /favicon.ico last;
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;
这样,多站点站群就实际上开启了。只不过现在还没有创建新子站,只显示一个主站而已。刷新一下后台,你会发现左上角代表home的小房子,变成了3个小房子,这就说明站群开启成功了。鼠标放在小房子上,会出现“管理网络”的菜单,点击进去有“站点”子菜单,点击进入站点子菜单,就可以创建新子站啦。
开启站群后,“主题”和“插件”的安装和维护也都会相应的提权到“管理网络”菜单中,而每个子站中不再允许单独对主题和插件进行安装,只可以选择启用或者停用。
对了,以上全是以我的需求“子目录”方式开启的站群,如果需要使用二级域名模式。针对阿帕奇Apache和Nginx需要增加不同的规则,特别说一下Nginx,就是要把每个用到的域名都绑定到server name中。
最后说一下感悟,每开一个子站,实际上wp就会在数据库中复制一份空数据表,你打开phpmyadmin也会很清楚的看到,数据表多了一倍,只是跟原来相比能明显的看到数据表名上有着明显区别于原主站的阿拉伯数字。
希望这篇文章能对使用wordpress wp开发中英双语网站或者多语、多地区网站的用户有一定的帮助。