Nginx環境下WordPress的多站點功能怎么配置

wordpress的多站點功能允許安裝一個WordPress程序的情況下,實現多個站點(也就是一套程序,可以綁定多個域名或子域名)。

每個站點擁有獨立的主題、插件、文章以及頁面。

這樣可以極大的減少了維護和更新多個wordpress安裝程序的麻煩,

并且,每個站點之間又能夠相互獨立,互不影響。

wordpress multisite有兩個方式:子目錄和子域名,這里我們主要介紹子域名方式。

也就是說,在主域名的基礎上,我們會創建一個子域名,例如:http://shop.jb51.com。

同時,我們可以映射這個子域名到一個一級域名如:http://shop.com,

對于訪問者來說,訪問的就是獨立的一級域名。

1、準備

wordpress介紹其多站點功能頁面:站點網絡管理頁面

接著,我們準備幾個域名,如下:

站點一:www.jb51.com(主域名),這是安裝wordpress時用的域名
站點二:blog.jb51.com,二級域名
站點三:news.com,映射的二級域名 news.jb51.com
站點四:shop.com,映射的二級域名 shop.jb51.com
注意:wordpress安裝后請勿擅自在后臺修改域名,即使是把有www改成無www,或者反過來,都有可能引起 redirected you too many times. 錯誤

然后,登錄域名服務商的解析頁面,把以上域名的a記錄全部設置為wordpress安裝的服務器ip。

也可以在本地電腦測試,可以直接修改hosts文件,加入下面1行:

127.0.0.1?www.jb51.com?blog.jb51.com?news.com?shop.com

2、nginx配置
nginx配置目錄下創建新建一個配置文件,如下:

$?sudo?vi?/etc/nginx/conf.d/jb51.conf

內容為:

server?{ listen?80; server_name?www.jb51.com?blog.jb51.com?news.com?shop.com;  root?/usr/share/nginx/wordpress; index?index.php;  location?/?{ try_files?$uri?$uri/?/index.php?$args?; }  location?~?/favicon.ico?{ Access_log?off; log_not_found?off; }  location?~?.php$?{ try_files?$uri?/index.php; include?fastcgi_params; fastcgi_pass?127.0.0.1:9000; fastcgi_index?index.php; fastcgi_param?script_filename?$document_root$fastcgi_script_name; }  access_log?/var/log/nginx/$host-access.log; Error_log?/var/log/nginx/wpms-error.log; }

這里我們使用$host變量可以讓nginx為每個域名生成獨立的訪問日志,

如:news.com-access.log 和 shop.com-access.log。

但是error日志不能用$host變量,所以所有的錯誤會記錄在一個文件里面。

再重啟nginx服務器:

$?nginx?-s?reload

3、安裝wordpress

按照wordpress正常安裝步驟安裝wordpress。

4、啟用多站點功能

用文本編輯器打開 wp-config.php 文件,在注釋:“/* 好了!請不要再繼續編輯。請保存本文件。使用愉快! */”之前加上如下一行:

/*?multisite?settings?*/ define(?'wp_allow_multisite',?true?);

接下來我們還會編輯這個文件幾次。

保存后登錄wordpress后臺,點擊:工具 > 網絡設置,選擇 子域名,網絡標題和網絡管理員郵箱任意輸入。

然后端機安裝。

Nginx環境下WordPress的多站點功能怎么配置

稍等片刻后,界面出現兩個代碼塊,提示分別加入wp-config.php和.htaccesss文件。

這里我們用的是nginx,所以不需要管 .htaccess 部分。

打開wp-config.php文件,還是在注釋:“/* 好了!請不要再繼續編輯。請保存本文件。使用愉快! */”之前,加上如下幾行:

define('multisite',?true); define('subdomain_install',?true); define('domain_current_site',?'www.jb51.com'); define('path_current_site',?'/'); define('site_id_current_site',?1); define('blog_id_current_site',?1); log?out?of?the?wordpress?admin?panel,?and?log?in?again.

登出wordpress后臺,再登入。

打開面板左上角 我的站點 > 網絡管理 > 站點。

Nginx環境下WordPress的多站點功能怎么配置

點擊 添加新的 按鈕,打開添加新站點表單,依次添加 blog、news、shop三個子域名。

Nginx環境下WordPress的多站點功能怎么配置

添加完成后,選 所有站點 ,編輯 news.jb51.com 和 shop.jb51.com 兩個子域名,站點標題分別為新聞和商城,

把 站點地址(url)分別改成:news.com和 shop.com。

這一步完成后,我們就可以訪問blog.jb51.com了,它已經是一個獨立的站點了,擁有獨立的資源了。

但是要能訪問news.com和shop.com,還需繼續往下看。

5、設置域名映射

打開面板左上角 我的站點 > 網絡管理 > 插件。

Nginx環境下WordPress的多站點功能怎么配置

在這里安裝 wordpress mu domain mapping 插件,直接搜索或者下載安裝都可以,然后啟用。

接著復制插件目錄(目錄wp-content/plugins/wordpress-mu-domain-mapping)下的 sunrise.php 文件到 wp-content 目錄。

打開wp-config.php文件,還是在注釋:“/* 好了!請不要再繼續編輯。請保存本文件。使用愉快! */”之前,加上如下一行:

define('sunrise',?'on');

保存,然后返回瀏覽器,在后臺中打開面板左上角 我的站點 > 網絡管理 > 設置。

再選擇domain mapping,修改 domain options 為如下圖:

Nginx環境下WordPress的多站點功能怎么配置

然后保存。

這里的配置的功能是:重定向所有二級域名(如 news.jb51.com )到各自的外部域名(如 news.com),包括管理頁面(/wp-admin)。

接下來,我們要映射一級域名到各個站點id。

默認在后臺不顯示站點id,所以我們用一個最簡單的方法讓后臺直接顯示站點id。

這個方法就是用wordpress的 must-use plugin。

在 wp-content 目錄下創建一個 mu-plugins 目錄,再在新建的目錄下創建一個名為 wpms_blogid.php 的文件,

這個php文件的內容為:

<?php add_filter( &#39;wpmu_blogs_columns&#39;, &#39;do_get_id&#39; ); add_action( &#39;manage_sites_custom_column&#39;, &#39;do_add_columns&#39;, 10, 2 ); add_action( &#39;manage_blogs_custom_column&#39;, &#39;do_add_columns&#39;, 10, 2 );  function do_add_columns( $column_name, $blog_id ) { if ( &#39;blog_id&#39; === $column_name ) echo $blog_id; return $column_name; }  function do_get_id( $columns ) { $columns[&#39;blog_id&#39;] = &#39;id&#39;; return $columns; }

保存后再訪問后臺的 站點 > 所有站點,在站點列表中就會多一列id,下一步就會用到。

后臺控制面板切換到 設置 > domains,加入兩個域名:

site id:3(以自己實際為主)
domian:news.com
primary:√

以及:

site id:4(以自己實際為主)
domian:shop.com
primary:√

如果域名是有www的,一樣的操作方式。

? 版權聲明
THE END
喜歡就支持一下吧
點贊5 分享