WordPress3。0以上的版本支持直接开启多站点模式,这样一来,你可以在一个后台切换多个站点进行管理。 最近打算折腾一个主题演示站,给每个主题使用独立的子站点来搭建演示,如果是Apache环境,配置就比较容易,但是倡萌使用的是Nginx,花了大量的时间测试了N多网络上的伪静态规则,最终找到了完美的解决方法。下面就分享下Linux下Apache和Nginx两种环境开启多站点的方法。Windows系统环境直接靠边站吧。 开启网络配置 在网站根目录下的wpconfig。php添加: define(WPALLOWMULTISITE,true); 配置多站点模式 刷新网站后台,访问工具配置网络,根据自己的需要选择子域名或者子目录模式,然后点击安装: 只有新安装的WordPress,并且绑定了域名,这时候才可以选择子域名模式。 如果你选择是的子域名,安装后,请将下面的代码添加到网站根目录下的wpconfig。php下: define(MULTISITE,true); define(SUBDOMAININSTALL,true); define(DOMAINCURRENTSITE,yourdomain。com); define(PATHCURRENTSITE,); define(SITEIDCURRENTSITE,1); define(BLOGIDCURRENTSITE,1); 如果选择的是子目录,则添加: define(MULTISITE,true); define(SUBDOMAININSTALL,false); define(DOMAINCURRENTSITE,yourdomain。com); define(PATHCURRENTSITE,); define(SITEIDCURRENTSITE,1); define(BLOGIDCURRENTSITE,1); 添加伪静态规则 Apache规则 如果你的服务器使用的是Aache环境,使用下面的代码替换网站根目录下的。htaccess里面的所有代码 子域名模式下的规则代码: RewriteEngineOn RewriteBase RewriteRuleindex。php〔L〕 addatrailingslashtowpadmin RewriteRulewpadminwpadmin〔R301,L〕 RewriteCond{REQUESTFILENAME}f〔OR〕 RewriteCond{REQUESTFILENAME}d RewriteRule〔L〕 RewriteRule(wp(contentadminincludes)。)1〔L〕 RewriteRule(。。php)1〔L〕 RewriteRule。index。php〔L〕 子目录模式下的规则代码: RewriteEngineOn RewriteBase RewriteRuleindex。php〔L〕 addatrailingslashtowpadmin RewriteRule(〔09azAZ〕)?wpadmin1wpadmin〔R301,L〕 RewriteCond{REQUESTFILENAME}f〔OR〕 RewriteCond{REQUESTFILENAME}d RewriteRule〔L〕 RewriteRule(〔09azAZ〕)?(wp(contentadminincludes)。)2〔L〕 RewriteRule(〔09azAZ〕)?(。。php)2〔L〕 RewriteRule。index。php〔L〕 Nginx规则 倡萌测试的是CentOS5。432位系统,服务器使用的是军哥LNMP1。0安装包配置的。 假设你的网站为yourdomain。com,那么你可以编辑这个配置文件: viusrlocalnginxconfvhostyourdomain。com。conf 在最后一个}的前面添加下面的代码: ignored:thingusedorunknownvariableinregexrew rewrite(〔09azAZ〕)?wpadmin1 if(frequestfilename){ setrule21; } if(drequestfilename){ setrule21; } if(rule21){ ignored:thingusedorunknownvariableinregexrew } rewrite(〔09azAZ〕)?(wp(contentadminincludes)。)2 rewrite(〔09azAZ〕)?(。。php)2 rewrite。index。 以上的规则对于子域名和子目录模式都正常使用,但是,如果你选择的是子域名模式,还需要找到: servernameyourdomain。 添加一个泛域名。yourdomain。com,如下: servernameyourdomain。com。yourdomain。 保存文件,然后重启服务器: rootlnmprestart 然后在你的域名管理那里添加一条泛域名。yourdomain。com解析到主机IP(或者分别解析你即将要使用的子域名到主机IP),这样一来,创建子域名站点时,就可以正常访问了。 附:以下是Nginx下最完整的多站点配置代码,实际使用时,请根据自己的实际修改域名及网站目录,同时建议删除含有中文的行: 根据自己的实际修改下面的域名 logformatyourdomain。comremoteaddrremoteuser〔timelocal〕request statusbodybytessenthttpreferer server { listen80; 根据自己的实际修改下面的域名 servernameyourdomain。com。yourdomain。 indexindex。htmlindex。htmindex。phpdefault。htmldefault。htmdefault。 注意修改下面的网站目录 rootmntwwwrootyourdomain。 includewordpress。 以下是lnmp1。0的wordpress。conf规则,也就是上一行includewordpress。conf里面的 location{ if(frequestfilenameindex。html){ rewrite(。)1index。 } if(frequestfilenameindex。php){ rewrite(。)1index。 } if(!frequestfilename){ rewrite(。)index。 } } wordpress。conf规则结束 location。。(phpphp5)? { tryfilesuri404; fastcgipassunix:tmpphpcgi。 fastcgiindexindex。 includefcgi。 } location。。(gifjpgjpegpngbmpswf) { expires30d; } location。。(jscss)? { expires12h; } accessloghomewwwlogshuchangmeng。com。loghuchangmeng。 ignored:thingusedorunknownvariableinregexrew rewrite(〔09azAZ〕)?wpadmin1 if(frequestfilename){ setrule21; } if(drequestfilename){ setrule21; } if(rule21){ ignored:thingusedorunknownvariableinregexrew } rewrite(〔09azAZ〕)?(wp(contentadminincludes)。)2 rewrite(〔09azAZ〕)?(。。php)2 rewrite。index。 } 修改固定链接结构 主站点 这里说的主站的,默认就是最初安装时的主域名,比如yourdomain。com 如果是子域名模式,你可以直接在这个主站的的设置固定链接直接修改即可。 如果是子目录模式,主站点的文章都自动在链接中添加了blog,如果你直接在这个子目录站点的设置固定链接设置结构,是无法去除blog的,而且在lnmp环境下,直接修改会自动添加index。php。 解决办法是,访问所有站点,点击主站点的编辑: 切换到设置标签,找到PermalinkStructure,在这里直接填写固定链接结构(比如postname。html),保存即可。这样就可以去除bolg,同时不会添加index。php,非常完美。 子站点 子站点直接在这个站点的后台设置固定链接那里设置即可。 到这里,一切基本的设置都完成啦!