WordPress 3.0以上的版本支持直接開啟多站點(diǎn)模式,這樣一來,你可以在一個(gè)后臺(tái)切換多個(gè)站點(diǎn)進(jìn)行管理。

最近打算折騰一個(gè)主題演示站,給每個(gè)主題使用獨(dú)立的子站點(diǎn)來搭建演示,如果是Apache環(huán)境,配置就比較容易,但是倡萌使用的是 Nginx,花了大量的時(shí)間測(cè)試了N多網(wǎng)絡(luò)上的偽靜態(tài)規(guī)則,最終找到了完美的解決方法。下面就分享下Linux下 Apache 和 Nginx 兩種環(huán)境開啟多站點(diǎn)的方法。Windows系統(tǒng)環(huán)境直接靠邊站吧。

開啟網(wǎng)絡(luò)配置

在網(wǎng)站根目錄下的 wp-config.php 添加:

define(‘WP_ALLOW_MULTISITE’, true);

配置多站點(diǎn)模式

刷新網(wǎng)站后臺(tái),訪問 工具 > 配置網(wǎng)絡(luò),根據(jù)自己的需要選擇“子域名”或者“子目錄”模式,然后點(diǎn)擊“安裝”:

multsite_wpzhu_com.jpg

只有新安裝的WordPress,并且綁定了域名,這時(shí)候才可以選擇“子域名”模式。

如果你選擇是的“子域名”,安裝后,請(qǐng)將下面的代碼添加到網(wǎng)站根目錄下的 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);

添加偽靜態(tài)規(guī)則

Apache 規(guī)則

如果你的服務(wù)器使用的是Aache環(huán)境,使用下面的代碼替換網(wǎng)站根目錄下的 .htaccess 里面的所有代碼

子域名模式下的規(guī)則代碼:

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]

子目錄模式下的規(guī)則代碼:

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 規(guī)則

測(cè)試的是 CentOS 5.4 32位系統(tǒng),服務(wù)器使用的是 軍哥 LNMP 1.0 安裝包配置的。

假設(shè)你的網(wǎng)站為 yourdomain.com,那么你可以編輯這個(gè)配置文件:

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

在最后一個(gè)?}?的前面添加下面的代碼:

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

以上的規(guī)則對(duì)于 子域名 和 子目錄 模式都正常使用,但是,如果你選擇的是 子域名 模式,還需要在配置文件找到:

server_name yourdomain.com;

添加一個(gè)泛域名 *.yourdomain.com,如下:

server_name yourdomain.com *.yourdomain.com;

保存文件,然后重啟服務(wù)器:

/root/lnmp restart

然后在你的域名管理那里添加一條泛域名 *.yourdomain.com 解析到主機(jī)IP(或者分別解析你即將要使用的子域名到主機(jī)IP),這樣一來,創(chuàng)建子域名站點(diǎn)時(shí),就可以正常訪問了。

附:以下是 Nginx 下最完整的多站點(diǎn)配置代碼,實(shí)際使用時(shí),請(qǐng)根據(jù)自己的實(shí)際修改域名及網(wǎng)站目錄,同時(shí)建議刪除含有中文的行:

# 根據(jù)自己的實(shí)際修改下面的域名

log_format? yourdomain.com? ‘$remote_addr – $remote_user [$time_local] “$request” ‘

‘$status $body_bytes_sent “$http_referer” ‘

‘”$http_user_agent” $http_x_forwarded_for’;

server

{

listen? ? ? ?80;

# 根據(jù)自己的實(shí)際修改下面的域名

server_name yourdomain.com *.yourdomain.com;

index index.html index.htm index.php default.html default.htm default.php;

# 注意修改下面的網(wǎng)站目錄

root? /mnt/wwwroot/yourdomain.com;

 

#include wordpress.conf;

#以下是 lnmp 1.0 的 wordpress.conf 規(guī)則,也就是上一行 include wordpress.conf 里面的

location / {

if (-f $request_filename/index.html){

rewrite (.*) $1/index.html break;

}

if (-f $request_filename/index.php){

rewrite (.*) $1/index.php;

}

if (!-f $request_filename){

rewrite (.*) /index.php;

}

}

# wordpress.conf 規(guī)則 結(jié)束

location ~ .*\.(php|php5)?$

{

try_files $uri =404;

fastcgi_pass? unix:/tmp/php-cgi.sock;

fastcgi_index index.php;

include fcgi.conf;

}

 

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

{

expires? ? ? 30d;

}

location ~ .*\.(js|css)?$

{

expires? ? ? 12h;

}

 

access_log? /home/wwwlogs/cnymc.com.log? cnymc.com;

 

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

 

}

修改固定鏈接結(jié)構(gòu)

主站點(diǎn)

這里說的主站的,默認(rèn)就是最初安裝時(shí)的主域名,比如 yourdomain.com

如果是?子域名?模式,你可以直接在這個(gè)主站的的 設(shè)置 > 固定鏈接 直接修改即可。

如果是?子目錄?模式,主站點(diǎn)的文章都自動(dòng)在鏈接中添加了 /blog/,如果你直接在這個(gè)子目錄站點(diǎn)的 設(shè)置 > 固定鏈接 設(shè)置結(jié)構(gòu),是無法去除 /blog/ 的,而且在 lnmp 環(huán)境下,直接修改會(huì)自動(dòng)添加 index.php。

解決辦法是,訪問 所有站點(diǎn),點(diǎn)擊主站點(diǎn)的編輯:

multsite1-wpzhu_com.jpg

切換到“設(shè)置”標(biāo)簽,找到 Permalink Structure ,在這里直接填寫 固定鏈接結(jié)構(gòu)(比如 /%postname%.html),保存即可。這樣就可以去除 /bolg/ ,同時(shí)不會(huì)添加 index.php,非常完美。

子站點(diǎn)

子站點(diǎn)直接在這個(gè)站點(diǎn)的后臺(tái) 設(shè)置 > 固定鏈接 那里設(shè)置即可。

 

到這里,一切基本的設(shè)置都完成啦!

聲明:本站所有資源由用戶發(fā)布分享以及互聯(lián)網(wǎng)轉(zhuǎn)載,只作為宣傳購買原版的參考,版權(quán)爭議與本站無關(guān);如果你有什么不錯(cuò)的資源,也可以提供給本站免費(fèi)幫你發(fā)布宣傳;本站不對(duì)任何資源負(fù)法律責(zé)任以及索取相關(guān)費(fèi)用,您若發(fā)現(xiàn)本站侵犯了你的版權(quán)利益,請(qǐng)聯(lián)系本站刪除處理!謝謝!