常阳时光

重新升级至 WordPress 多站点模式

早在几年前就弄过 WordPress 多站点模式了,那时候还弄过独立域名映射。后来更换主机,加上懒癌发作就直接去掉了,昨天心血来潮又折腾上了。其实多站点模式也挺好的,维护一套 WordPress 程序就可以很方便的新建独立的站点,比如开个测试站、主题展示站……

记录一下步骤:

1、备份整站数据

2、打开 wp-config.php,在 define('WP_DEBUG', false); 之前添加 define('WP_ALLOW_MULTISITE', true);

3、重新登录 WordPress 后台,打开 Tools –> Network (工具 –> 网络)就可以看到网络设置,输入站点网络名和管理员 Email 信息,点 Install 安装即可。

4、打开 wp-config.php,删除第二步添加的 define('WP_ALLOW_MULTISITE', true); 然后按照向导程序的提示分别将给出的文件内容添加到 wp-config.php 和 .htaccess 两个文件中。

wp-config.php 文件添加的内容,分两种情况:

a.子域名模式,添加以下代码:

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);

b.子目录模式,则添加以下代码:

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);

.htaccess 文件添加的代码也分两种情况:

a.子域名模式,添加以下代码:

# 开始 WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# 文件上传
RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule . index.php [L]
# 结束 WordPress

b.子目录模式,则添加以下代码:

# 开始 WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# 上传文件
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]

# 为 /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).*) $1 [L]
RewriteRule ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
# 结束 WordPress

昨天折腾的时候我就在这里倒下了,我选择的是子目录模式,却在 .htaccess 文件中添加了子域名模式的代码,导致添加的子站点后台无法进去,前台可以访问,但是无法加载CSS和图片等东西。放狗搜索到【WordPress 多用户模式子站点无法加载 CSS】,才恍然大悟~哎,粗心大意。

5、修改固定链接结构

a.主站点——默认就是最初安装时的主域名,比如我这里就是:cyhour.com

如果是子域名模式,直接在这个主站的仪表盘 设置 -> 固定链接 修改即可。如果是子目录模式,主站点的文章都自动在链接中添加了 /blog/,这个时候直接在主站点的仪表盘 设置 -> 固定链接 设置结构,是无法去除 /blog/ 的。

解决办法:打开所有站点,点击主站点的编辑。

切换到【设置】标签,找到 Permalink Structure ,在这里直接填写固定链接结构(比如我的是 /%post_id%/),保存。然后到主站的仪表盘 设置 -> 固定链接 修改保存一下即可。这样就可以完美去除固定链接的 /bolg/。

b.子站点

子站点直接在相应的子站点的仪表盘 设置 -> 固定链接 里修改即可。若不生效,可以按照上面主站点的方法修改。


参考资源:

1、WordPress 官网 - zh-cn:创建站点网络

2、水景一页 - 升级至 WordPress 3.0 多站点模式

3、WordPress 大学 - WordPress 开启多站点(含Apache和Nginx伪静态规则)

完。