當前位置:首頁>WordPress建站>網(wǎng)站維護>WordPress 開啟多站點(含Apache和Nginx偽靜態(tài)規(guī)則)

WordPress 開啟多站點(含Apache和Nginx偽靜態(tài)規(guī)則)

文本是《WordPress 多站點(共10篇)》專題的第 2 篇。閱讀本文前,建議先閱讀前面的文章:

WordPress 3.0以上的版本支持直接開啟多站點模式,這樣一來,你可以在一個后臺切換多個站點進行管理。

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

開啟網(wǎng)絡配置

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

define('WP_ALLOW_MULTISITE', true);

配置多站點模式

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

multsite-wpdaxue_com

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

如果你選擇是的“子域名”,安裝后,請將下面的代碼添加到網(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ī)則

如果你的服務器使用的是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ī)則

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

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

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

最后一個 } 的前面添加下面的代碼:

#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ī)則對于 子域名 和 子目錄 模式都正常使用,但是,如果你選擇的是 子域名 模式,還需要找到:

server_name yourdomain.com;

添加一個泛域名 *.yourdomain.com,如下:

server_name yourdomain.com *.yourdomain.com;

保存文件,然后重啟服務器:

/root/lnmp restart

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

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

# 根據(jù)自己的實際修改下面的域名
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ù)自己的實際修改下面的域名
                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ī)則 結束

                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/huchangmeng.com.log  huchangmeng.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;
				
        }

修改固定鏈接結構

主站點

這里說的主站的,默認就是最初安裝時的主域名,比如 yourdomain.com

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

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

解決辦法是,訪問 所有站點,點擊主站點的編輯:

multsite1-wpdaxue_com

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

子站點

子站點直接在這個站點的后臺 設置 > 固定鏈接 那里設置即可。

 

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

聲明:本站所有文章,如無特殊說明或標注,均為本站原創(chuàng)發(fā)布。任何個人或組織,在未征得本站同意時,禁止復制、盜用、采集、發(fā)布本站內容到任何網(wǎng)站、書籍等各類媒體平臺。如若本站內容侵犯了原著者的合法權益,可聯(lián)系我們進行處理。

給TA打賞
共{{data.count}}人
人已打賞
歡迎關注WordPress大學公眾號 WPDAXUE
網(wǎng)站維護

WordPress 使用 lazyload 延遲加載圖片

2013-9-13 9:06:07

網(wǎng)站維護

WordPress 關閉多站點模式

2013-10-17 13:49:01

42 條回復 A文章作者 M管理員
  1. 小衛(wèi)

    “Windows系統(tǒng)環(huán)境直接靠邊站吧。”請問這話的意思是WIN不支持還是怎么回事呢?

    • 網(wǎng)站編輯

      windows下也可以安裝WordPress,但是出于安全性、性能等考慮,我們極力不推薦大家用windows主機

    • 易云

      大俠,這個設置現(xiàn)在還有效嗎,創(chuàng)建的多站點是獨立的還是和主站一樣的,是復制了一個相同的網(wǎng)站嗎

    • 網(wǎng)站編輯

      所謂多站點模式,就是多個站點同時使用一份WP的文件,每個子站點都是相對獨立,有屬于自己的WP后臺管理界面,也可以安裝使用不同的主題和插件,新建的某個子站點都是新的,不是復制其他站點。具體你可以弄個測試站點去研究

    • 易云

      謝謝,這個多站點是只能使用主站點的二級域名的還是不限域名,一級二級都行的

    • 網(wǎng)站編輯

      WP多站點模式可以編輯每個站點的設置,只要你將域名解析并綁定到你的主機空間(或添加到這個主站的配置文件中),就可以直接修改子站點域名為任何域名

  2. 螞蟻

    新建的wordpress也提示: 檢測到已存在的WordPress網(wǎng)絡。
    是什么問題呢?

    • 網(wǎng)站編輯

      檢查下你網(wǎng)站根目錄的 wp-config.php 文件,是不是添加了開啟多站點模式的代碼

    • 螞蟻

      發(fā)現(xiàn)原來是忽略了:將以下內容加入到在 ****(馬賽克) 的 wp-config.php 文件, 加在 /* 到此為止,別再修改了!開始寫博客吧。 */ 這行上方。
      真是好尷尬,我每次都是直接加在 wp-config.php 文件最下面的,被自己蠢哭。

    • 螞蟻

      萌大人,我這邊發(fā)現(xiàn)用了wordpress多站點偽靜態(tài)后,不能直接訪問靜態(tài)文件了,如我在根目錄放個 1.png ,然后訪問 http://www.ydqwiac.cn/1.png 會顯示 404 ,刪掉偽靜態(tài)代碼后可以正常訪問,所以想請教下,這該咋辦??

  3. 文平

    贊一下文章,這是網(wǎng)上關于WordPress多站點最詳盡論述了!請問我選擇子域名、點安裝后,文章都404了,Apache,LAMP環(huán)境,如何修改固定鏈接結構,讓文章顯示出來?

  4. bio-L

    博主你好,我和之前的一樣,安裝的子目錄,新建站點之后沒有辦法進入控制板,主頁倒是能進。我用的是 Nginx,沒有修改靜態(tài)規(guī)則。我的nginx/conf/vhost下沒有conf文件,很奇怪。不知如何解決?

  5. MichelleXD

    博主,我設置完之后,主站點可以進入,但是子目錄的站點沒法進入dashborad,會顯示此頁面不能正確地重定向,請怎么解決這個問題呢? 我用的是 Nginx。
    謝謝!

  6. pp

    為啥配置完重新登錄,看不到儀表板下面的“站點”選項?

  7. jason

    我配置的時候遇到了個問題。
    報錯:警告,已經(jīng)存在一個網(wǎng)絡,若要配置需要刪除或清空網(wǎng)絡數(shù)據(jù)庫表。
    然后頂部也沒有multisite的按鈕,不知道怎么解決了

    • 網(wǎng)站編輯

      提示已經(jīng)很清楚了,你這個站點應該是配置過一次多站點了

  8. xiaocheng

    使用百度云虛擬主機Nginx環(huán)境下使用,完全打不開子站點,其他都正常。是怎么回事?用這里的代碼后直接報錯Nginx配置錯誤。

    • tom

      我也是遇到這個問題 你解決了嗎

    • 白白的

      我在阿里云服務器上配置多站點也是這個問題,請問你們解決了嗎?

  9. peijinglei

    添加了代碼 根本沒有配置網(wǎng)絡這一項啊 求解啊 好郁悶

  10. 森云|SentYun

    ? ? ? 博主大人,不太理解多站點是什么意思啊

    • yeskeep

      比如你要用wp建10個站。但用了這個插件,你只需要在一個wp站上面,像新建目錄一樣,就可以創(chuàng)建10個站點了

?
個人中心
購物車
優(yōu)惠劵
今日簽到
有新私信 私信列表
搜索

龙岩市| 阜平县| 日土县| 长垣县| 于都县| 孙吴县| 寿阳县| 襄樊市| 阿图什市| 麦盖提县| 招远市| 台北市| 南木林县| 中牟县| 大英县| 射洪县| 苗栗市| 英吉沙县| 长宁区| 通许县| 皮山县| 汉阴县| 龙江县| 岢岚县| 团风县| 武强县| 昭觉县| 平利县| 福建省| 襄樊市| 惠来县| 沁阳市| 体育| 郑州市| 达拉特旗| 卢湾区| 榕江县| 江城| 常宁市| 友谊县| 通榆县|