李钟安 發表於 2023-7-27 00:00:00

WordPress中开启多站点支持及Nginx的重写规则配置

<p>
在Wordpress3.0及以上版本可以直接使用多站点,它可以:</p>
<p>
1、只安装一个Wordpress程序即可创建多个wordpress站点,可以是子域名也可以是子目录。</p>
<p>
2、可以有独立的博客后台,独立的博客地址。</p>
<p>
3、管理员可设置开放哪些主题给站点使用。</p>
<p>
4、管理员可配置插件给每个站点使用。</p>
<p>
5、多个站点之间共用“用户数据库表”,也就是表 wp_usermeta 和 wp_users,其他的为独立数据库表。</p>
<p>
<strong>WordPress多站点的配置方法:</strong></p>
<p>
1、首先,备份网站的数据库,以防出现意外时恢复(一般可忽略)。</p>
<p>
2、打开WordPress的根目录下的wp-config.php文件,在<br>
require_once(ABSPATH . 'wp-settings.php');<br>
前面加上以下代码:</p>
<p>
define('WP_ALLOW_MULTISITE',true);</p>
<p>
3、进入WordPress后台,”工具”-&gt; 点击”配置网络”</p>
<p>
ps:如果您要使用二级域名的形式,可以到“设置”-&gt;“常规”里面,把站点地址(URL)的www.去掉。</p>
<p>
<img style="max-width:100%!important;height:auto!important;"title="WordPress中开启多站点支持及Nginx的重写规则配置" alt="WordPress中开启多站点支持及Nginx的重写规则配置" src="https://zhuji.jb51.net/uploads/img/202305/bcd0f21a473da8660a8a119258907bb8.jpg"></p>
<p>
4、点击安装后,按照提示做好相关的配置</p>
<p>
5、配置好,再次进入后台,在头部将出现“我的站点”-&gt;“管理网络”的选项菜单,接下来您可以管理或者创建站点,也可以开启主题或者插件给其他站点使用。</p>
<p>
<img style="max-width:100%!important;height:auto!important;"title="WordPress中开启多站点支持及Nginx的重写规则配置" alt="WordPress中开启多站点支持及Nginx的重写规则配置" src="https://zhuji.jb51.net/uploads/img/202305/ce31e5791d14edf256547db1bbba5b28.jpg"></p>
<p>
6、如果要给站点绑定其他域名,可以安装 WordPress MU Domain Mapping 插件。</p>
<p>
<strong>nginx多站点rewrite(重写)规则</strong><br>
wordpress多站点模式可以被应用在多种方式上。其中最常用的是在”子目录”模式或者”二级域名”模式上。<br>
Nginx提供了两种特殊的指令:”x-accel-redirect”和”map”,使用这两个指令可以使得wordpress多站点的网络服务实现伪静态功能。</p>
<p>
<strong>wordpress多站点使用子目录重写规则:</strong><br>
配置中jb51.net修改为自己的站点域名。</p>
<div>
<div>
<div id="highlighter_756147">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
<div>
2</div>
<div>
3</div>
<div>
4</div>
<div>
5</div>
<div>
6</div>
<div>
7</div>
<div>
8</div>
<div>
9</div>
<div>
10</div>
<div>
11</div>
<div>
12</div>
<div>
13</div>
<div>
14</div>
<div>
15</div>
<div>
16</div>
<div>
17</div>
<div>
18</div>
<div>
19</div>
<div>
20</div>
<div>
21</div>
<div>
22</div>
<div>
23</div>
<div>
24</div>
<div>
25</div>
<div>
26</div>
<div>
27</div>
<div>
28</div>
<div>
29</div>
<div>
30</div>
<div>
31</div>
<div>
32</div>
<div>
33</div>
<div>
34</div>
<div>
35</div>
<div>
36</div>
<div>
37</div>
<div>
38</div>
<div>
39</div>
<div>
40</div>
<div>
41</div>
<div>
42</div>
<div>
43</div>
<div>
44</div>
<div>
45</div>
<div>
46</div>
<div>
47</div>
<div>
48</div>
</td>
<td>
<div>
<div>
<code>map $uri $blogname{</code>
</div>
<div>
<code> </code><code>~^(?P&lt;blogpath&gt;/[^/]+/)files/(.*) $blogpath ;</code>
</div>
<div>
<code>}</code>
</div>
<div>
<code> </code>
</div>
<div>
<code>map $blogname $blogid{</code>
</div>
<div>
<code> </code><code>default -999;</code>
</div>
<div>
<code> </code>
</div>
<div>
<code> </code><code>#Ref: http://wordpress.org/extend/plugins/nginx-helper/</code>
</div>
<div>
<code> </code><code>#include /var/www/wordpress/wp-content/plugins/nginx-helper/map.conf ;</code>
</div>
<div>
<code>}</code>
</div>
<div>
<code> </code>
</div>
<div>
<code>server {</code>
</div>
<div>
<code> </code><code>server_name jb51.net ;</code>
</div>
<div>
<code> </code>
</div>
<div>
<code> </code><code>root /var/www/jb51.net/htdocs;</code>
</div>
<div>
<code> </code><code>index index.php;</code>
</div>
<div>
<code> </code>
</div>
<div>
<code> </code><code>#多站点配置</code>
</div>
<div>
<code> </code><code>location ~ ^(/[^/]+/)?files/(.+) {</code>
</div>
<div>
<code> </code><code>try_files /wp-content/blogs.dir/$blogid/files/$2 /wp-includes/ms-files.php?file=$2 ;</code>
</div>
<div>
<code> </code><code>access_log off; log_not_found off; expires max;</code>
</div>
<div>
<code> </code><code>}</code>
</div>
<div>
<code> </code>
</div>
<div>
<code> </code><code>#avoid php readfile()</code>
</div>
<div>
<code> </code><code>location ^~ /blogs.dir {</code>
</div>
<div>
<code> </code><code>internal;</code>
</div>
<div>
<code> </code><code>alias /var/www/jb51.net/htdocs/wp-content/blogs.dir ;</code>
</div>
<div>
<code> </code><code>access_log off; log_not_found off; expires max;</code>
</div>
<div>
<code> </code><code>}</code>
</div>
<div>
<code> </code>
</div>
<div>
<code> </code><code>if (!-e $request_filename) {</code>
</div>
<div>
<code> </code><code>rewrite /wp-admin$ $scheme://$host$uri/ permanent; </code>
</div>
<div>
<code> </code><code>rewrite ^(/[^/]+)?(/wp-.*) $2 last; </code>
</div>
<div>
<code> </code><code>rewrite ^(/[^/]+)?(/.*\.php) $2 last; </code>
</div>
<div>
<code> </code><code>}</code>
</div>
<div>
<code> </code>
</div>
<div>
<code> </code><code>location / {</code>
</div>
<div>
<code> </code><code>try_files $uri $uri/ /index.php?$args ;</code>
</div>
<div>
<code> </code><code>}</code>
</div>
<div>
<code> </code>
</div>
<div>
<code> </code><code>location ~ \.php$ {</code>
</div>
<div>
<code> </code><code>try_files $uri =404;</code>
</div>
<div>
<code> </code><code>include fastcgi_params;</code>
</div>
<div>
<code> </code><code>fastcgi_pass php;</code>
</div>
<div>
<code> </code><code>}</code>
</div>
<div>
<code> </code>
</div>
<div>
<code> </code><code>#此处可以继续添加伪静态规则</code>
</div>
<div>
<code>}</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
</div>
<p>
<strong>wordpress多站二级域名重写规则:</strong><br>
配置中jb51.net修改为自己的站点域名。</p>
<div>
<div>
<div id="highlighter_591075">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
<div>
2</div>
<div>
3</div>
<div>
4</div>
<div>
5</div>
<div>
6</div>
<div>
7</div>
<div>
8</div>
<div>
9</div>
<div>
10</div>
<div>
11</div>
<div>
12</div>
<div>
13</div>
<div>
14</div>
<div>
15</div>
<div>
16</div>
<div>
17</div>
<div>
18</div>
<div>
19</div>
<div>
20</div>
<div>
21</div>
<div>
22</div>
<div>
23</div>
<div>
24</div>
<div>
25</div>
<div>
26</div>
<div>
27</div>
<div>
28</div>
<div>
29</div>
<div>
30</div>
<div>
31</div>
<div>
32</div>
<div>
33</div>
<div>
34</div>
<div>
35</div>
<div>
36</div>
<div>
37</div>
<div>
38</div>
<div>
39</div>
</td>
<td>
<div>
<div>
<code>map $http_host $blogid {</code>
</div>
<div>
<code> </code><code>default  -999;</code>
</div>
<div>
<code> </code>
</div>
<div>
<code> </code><code>#Ref: http://wordpress.org/extend/plugins/nginx-helper/</code>
</div>
<div>
<code> </code><code>#include /var/www/wordpress/wp-content/plugins/nginx-helper/map.conf ;</code>
</div>
<div>
<code> </code>
</div>
<div>
<code>}</code>
</div>
<div>
<code> </code>
</div>
<div>
<code>server {</code>
</div>
<div>
<code> </code><code>server_name jb51.net *.jb51.net ;</code>
</div>
<div>
<code> </code>
</div>
<div>
<code> </code><code>root /var/www/jb51.net/htdocs;</code>
</div>
<div>
<code> </code><code>index index.php;</code>
</div>
<div>
<code> </code>
</div>
<div>
<code> </code><code>location / {</code>
</div>
<div>
<code> </code><code>try_files $uri $uri/ /index.php?$args ;</code>
</div>
<div>
<code> </code><code>}</code>
</div>
<div>
<code> </code>
</div>
<div>
<code> </code><code>location ~ \.php$ {</code>
</div>
<div>
<code> </code><code>try_files $uri =404;</code>
</div>
<div>
<code> </code><code>include fastcgi_params;</code>
</div>
<div>
<code> </code><code>fastcgi_pass php;</code>
</div>
<div>
<code> </code><code>}</code>
</div>
<div>
<code> </code>
</div>
<div>
<code> </code><code>#WPMU Files</code>
</div>
<div>
<code>  </code><code>location ~ ^/files/(.*)$ {</code>
</div>
<div>
<code>    </code><code>try_files /wp-content/blogs.dir/$blogid/$uri /wp-includes/ms-files.php?file=$1 ;</code>
</div>
<div>
<code>    </code><code>access_log off; log_not_found off;  expires max;</code>
</div>
<div>
<code>  </code><code>}</code>
</div>
<div>
<code> </code>
</div>
<div>
<code> </code><code>#WPMU x-sendfile to avoid php readfile()</code>
</div>
<div>
<code> </code><code>location ^~ /blogs.dir {</code>
</div>
<div>
<code> </code><code>internal;</code>
</div>
<div>
<code> </code><code>alias /var/www/jb51.net/htdocs/wp-content/blogs.dir;</code>
</div>
<div>
<code> </code><code>access_log off; log_not_found off; expires max;</code>
</div>
<div>
<code> </code><code>}</code>
</div>
<div>
<code> </code>
</div>
<div>
<code> </code><code>#此处可以继续添加伪静态规则</code>
</div>
<div>
<code>}</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
</div>
<p>
备注</p>
<p>
“map”部分可以应用于小站点。大站点的多站点应用可以使用 nginx-helper wordpress插件 。<br>
如果想进一步优化wordpress的性能可以使用Nginx的fastcgi_cache,当使用fastcgi_cache配置需要在编译nginx时加上ngx_cache_purge模块以及使用wordpress的缓存插件等等</p>
頁: [1]
查看完整版本: WordPress中开启多站点支持及Nginx的重写规则配置