早在几年前就弄过 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伪静态规则)
完。
准备写几个博客?
@不亦乐乎 额,博客一个更新都懒呢。垃圾站倒是可以建一堆。
这。。。真够折腾的,有时候总想搞点其他的站点而不写博客。
可是到头来,连博客都更新那么不勤快,其他的怎么弄得好。
@fooleap 不算折腾啊,转换起来挺简单的。至于弄得好不好,与这个没有太大关系,至少对我来说是这样。不弄这个,博客也就是自娱自乐的地方;弄了这个,还是那个样子。
哈哈,折腾无极限啊
@路杨 不至于吧?也不是很复杂很难的事情。
@老头 首先,需要泛域名解析支持。其次,需要想好子域名代表的意思,再次,考虑 cookie 公用原则。所以我才说,折腾啊。哈哈
@路杨 我用的子目录模式,稍稍省事点。
喜好搞网站的都建立过无数垃圾站,哈哈。。然后一个个的等着长草。曾经音乐,文章,教程,哲学,下载,等等站点,这种分站适合yo2以前那种博客商服务,我在想如今那些wordpress博客商我看都差不多倒下去了,只有wordpress官方了吧。
@郑永 嗯,倒就倒呗。
好文,提醒我了,因为历史原因我一直是维护俩站点,现在打算合并成子域名模式方便管理。
@老虎 子目录更省事。
一个博客都懒得更新,再多都是等着长草
@钛客志 长草就除草呗。
维护着两个博客,一个朋友,一个自己的。都是有内容更新的……这种一套代码维护两个站点的。感觉可能问题会很多……JS都涉及到域名了
@随望淡思 会有什么很大的问题呢?WordPress.com 不就是活生生的多站点?当然,它更复杂。js 涉及域名?多站点也可以映射独立域名的,并且,不同站点一般用的主题不一样啊。数据库是同一个数据库,但是不同博客会有不一样的表,插件倒是得共用。
上传文件可以共用么
@maie 文件肯定可以吧?后台多媒体就不知道了,我没用那货,图片啥的都是 ftp 上传的。
你这样做并没有什么优势或好处吧
@木瓜园 有好处啊,可以很方便的折腾子站点。
第一次听说wordpress多站点模式。不知道是不是一个后台来管理多个网站?我每次新建网站都是分配服务器来分配虚拟主机安装wordpress程序。
@mrjucn 一个后台管理站点列表,每个站点都有自己的后台。实际使用得自己试过才能更好的体会。
太多了没空折腾
@小萝博客 嗯,我现在又撤掉了,使用一段时间发现多站点会很慢,可能是我主机配置太低了。