为什么最近开始研究多站点了呢,因为多站点不用每次开个网站都要重新安装WordPress,并且最重要的是可以多个WordPress网站之间用户数据共享,这才是缙哥哥想要的。否则以多站点大量插件不兼容的问题,缙哥哥是一点也不喜欢!
开启 WordPress 多站点网络配置
首先建议全新安装一个站点,并在网站根目录下的 wp-config.php 添加如下代码:
1 2 |
<span class="com">/* 开启 WordPress 多站点配置 - https://www.dujin.org/12501.html */</span><span class="pln"> define</span><span class="pun">(</span><span class="str">\'WP_ALLOW_MULTISITE\'</span><span class="pun">,</span> <span class="kwd">true</span><span class="pun">);</span> |
建议将上述代码复制到下方描述的位置上面。
1 |
<span class="com">/* 好了!请不要再继续编辑。请保存本文件。使用愉快! */</span> |
配置多站点网络
由于实际操作为子目录形式,在此着重讲解。在上述“开启多站点配置”代码的下方,添加
1 2 3 4 5 6 |
<span class="pln">define</span><span class="pun">(</span><span class="str">\'MULTISITE\'</span><span class="pun">,</span> <span class="kwd">true</span><span class="pun">);</span><span class="pln"> define</span><span class="pun">(</span><span class="str">\'SUBDOMAIN_INSTALL\'</span><span class="pun">,</span> <span class="kwd">false</span><span class="pun">);</span><span class="pln"> define</span><span class="pun">(</span><span class="str">\'DOMAIN_CURRENT_SITE\'</span><span class="pun">,</span> <span class="str">\'yourdomain.com\'</span><span class="pun">);</span><span class="pln"> define</span><span class="pun">(</span><span class="str">\'PATH_CURRENT_SITE\'</span><span class="pun">,</span> <span class="str">\'/\'</span><span class="pun">);</span><span class="pln"> define</span><span class="pun">(</span><span class="str">\'SITE_ID_CURRENT_SITE\'</span><span class="pun">,</span> <span class="lit">1</span><span class="pun">);</span><span class="pln"> define</span><span class="pun">(</span><span class="str">\'BLOG_ID_CURRENT_SITE\'</span><span class="pun">,</span> <span class="lit">1</span><span class="pun">);</span> |
WordPress多站点伪静态设置
在宝塔网站设置的伪静态中设置相关代码。
Apache伪静态规则
将下方代码加入网站根目录中的 .htaccess 文件中,替换其他 WordPress 规则:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<span class="typ">RewriteEngine</span> <span class="typ">On</span> <span class="typ">RewriteBase</span> <span class="pun">/</span> <span class="typ">RewriteRule</span> <span class="pun">^</span><span class="pln">index\.php$ </span><span class="pun">-</span> <span class="pun">[</span><span class="pln">L</span><span class="pun">]</span> <span class="com"># add a trailing slash to /wp-admin</span> <span class="typ">RewriteRule</span> <span class="pun">^([</span><span class="pln">_0</span><span class="pun">-</span><span class="lit">9a</span><span class="pun">-</span><span class="pln">zA</span><span class="pun">-</span><span class="pln">Z</span><span class="pun">-] /)?</span><span class="pln">wp</span><span class="pun">-</span><span class="pln">admin$ $1wp</span><span class="pun">-</span><span class="pln">admin</span><span class="pun">/</span> <span class="pun">[</span><span class="pln">R</span><span class="pun">=</span><span class="lit">301</span><span class="pun">,</span><span class="pln">L</span><span class="pun">]</span> <span class="typ">RewriteCond</span> <span class="pun">%{</span><span class="pln">REQUEST_FILENAME</span><span class="pun">}</span> <span class="pun">-</span><span class="pln">f </span><span class="pun">[</span><span class="pln">OR</span><span class="pun">]</span> <span class="typ">RewriteCond</span> <span class="pun">%{</span><span class="pln">REQUEST_FILENAME</span><span class="pun">}</span> <span class="pun">-</span><span class="pln">d </span><span class="typ">RewriteRule</span> <span class="pun">^</span> <span class="pun">-</span> <span class="pun">[</span><span class="pln">L</span><span class="pun">]</span> <span class="typ">RewriteRule</span> <span class="pun">^([</span><span class="pln">_0</span><span class="pun">-</span><span class="lit">9a</span><span class="pun">-</span><span class="pln">zA</span><span class="pun">-</span><span class="pln">Z</span><span class="pun">-] /)?(</span><span class="pln">wp</span><span class="pun">-(</span><span class="pln">content</span><span class="pun">|</span><span class="pln">admin</span><span class="pun">|</span><span class="pln">includes</span><span class="pun">).*)</span><span class="pln"> $2 </span><span class="pun">[</span><span class="pln">L</span><span class="pun">]</span> <span class="typ">RewriteRule</span> <span class="pun">^([</span><span class="pln">_0</span><span class="pun">-</span><span class="lit">9a</span><span class="pun">-</span><span class="pln">zA</span><span class="pun">-</span><span class="pln">Z</span><span class="pun">-] /)?(.*</span><span class="pln">\.php</span><span class="pun">)</span><span class="pln">$ $2 </span><span class="pun">[</span><span class="pln">L</span><span class="pun">]</span> <span class="typ">RewriteRule</span> <span class="pun">.</span><span class="pln"> index</span><span class="pun">.</span><span class="pln">php </span><span class="pun">[</span><span class="pln">L</span><span class="pun">]</span> |
Nginx伪静态规则
由于 WordPress 默认提供的是 apache 的伪静态规则,所以这里利用 宝塔规则转换工具:Apache转Nginx 进行转换,得到如下规则:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<span class="com">#ignored: "-" thing used or unknown variable in regex/rew </span><span class="pln"> rewrite </span><span class="pun">^</span><span class="str">/([_0-9a-zA-Z-] /</span><span class="pun">)?</span><span class="pln">wp</span><span class="pun">-</span><span class="pln">admin$ </span><span class="pun">/</span><span class="pln">$1wp</span><span class="pun">-</span><span class="pln">admin</span><span class="pun">/</span><span class="pln"> permanent</span><span class="pun">;</span> <span class="kwd">if</span> <span class="pun">(-</span><span class="pln">f $request_filename</span><span class="pun">){</span> <span class="kwd">set</span><span class="pln"> $rule_2 </span><span class="lit">1</span><span class="pun">;</span> <span class="pun">}</span> <span class="kwd">if</span> <span class="pun">(-</span><span class="pln">d $request_filename</span><span class="pun">){</span> <span class="kwd">set</span><span class="pln"> $rule_2 </span><span class="lit">1</span><span class="pun">;</span> <span class="pun">}</span> <span class="kwd">if</span> <span class="pun">(</span><span class="pln">$rule_2 </span><span class="pun">=</span> <span class="str">"1"</span><span class="pun">){</span> <span class="com">#ignored: "-" thing used or unknown variable in regex/rew </span> <span class="pun">}</span><span class="pln"> rewrite </span><span class="pun">^</span><span class="str">/([_0-9a-zA-Z-] /</span><span class="pun">)?(</span><span class="pln">wp</span><span class="pun">-(</span><span class="pln">content</span><span class="pun">|</span><span class="pln">admin</span><span class="pun">|</span><span class="pln">includes</span><span class="pun">).*)</span> <span class="pun">/</span><span class="pln">$2 </span><span class="kwd">last</span><span class="pun">;</span><span class="pln"> rewrite </span><span class="pun">^</span><span class="str">/([_0-9a-zA-Z-] /</span><span class="pun">)?(.*</span><span class="pln">\.php</span><span class="pun">)</span><span class="pln">$ </span><span class="pun">/</span><span class="pln">$2 </span><span class="kwd">last</span><span class="pun">;</span><span class="pln"> rewrite </span><span class="pun">/.</span> <span class="pun">/</span><span class="pln">index</span><span class="pun">.</span><span class="pln">php </span><span class="kwd">last</span><span class="pun">;</span> |
完整Nginx伪静态规则
然而,才添加后发现并不能访问网站,研究许久,发现需要在原本的 WordPress 伪静态规则之上进行添加,在此,列出完整的 WordPress 多站点Nginx伪静态规则,小伙伴们可根据本教程结合自己的实际情况进行调整。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<span class="pln">location </span><span class="pun">/</span> <span class="pun">{</span><span class="pln"> index index</span><span class="pun">.</span><span class="pln">html index</span><span class="pun">.</span><span class="pln">php</span><span class="pun">;</span> <span class="kwd">if</span> <span class="pun">(-</span><span class="pln">f $request_filename</span><span class="pun">/</span><span class="pln">index</span><span class="pun">.</span><span class="pln">html</span><span class="pun">){</span><span class="pln"> rewrite </span><span class="pun">(.*)</span><span class="pln"> $1</span><span class="pun">/</span><span class="pln">index</span><span class="pun">.</span><span class="pln">html </span><span class="kwd">break</span><span class="pun">;</span> <span class="pun">}</span> <span class="kwd">if</span> <span class="pun">(-</span><span class="pln">f $request_filename</span><span class="pun">/</span><span class="pln">index</span><span class="pun">.</span><span class="pln">php</span><span class="pun">){</span><span class="pln"> rewrite </span><span class="pun">(.*)</span><span class="pln"> $1</span><span class="pun">/</span><span class="pln">index</span><span class="pun">.</span><span class="pln">php</span><span class="pun">;</span> <span class="pun">}</span> <span class="kwd">if</span> <span class="pun">(!-</span><span class="pln">f $request_filename</span><span class="pun">){</span><span class="pln"> rewrite </span><span class="pun">(.*)</span> <span class="pun">/</span><span class="pln">index</span><span class="pun">.</span><span class="pln">php</span><span class="pun">;</span> <span class="pun">}</span> <span class="com">#ignored: "-" thing used or unknown variable in regex/rew </span><span class="pln"> rewrite </span><span class="pun">^</span><span class="str">/([_0-9a-zA-Z-] /</span><span class="pun">)?</span><span class="pln">wp</span><span class="pun">-</span><span class="pln">admin$ </span><span class="pun">/</span><span class="pln">$1wp</span><span class="pun">-</span><span class="pln">admin</span><span class="pun">/</span><span class="pln"> permanent</span><span class="pun">;</span> <span class="kwd">if</span> <span class="pun">(-</span><span class="pln">f $request_filename</span><span class="pun">){</span> <span class="kwd">set</span><span class="pln"> $rule_2 </span><span class="lit">1</span><span class="pun">;</span> <span class="pun">}</span> <span class="kwd">if</span> <span class="pun">(-</span><span class="pln">d $request_filename</span><span class="pun">){</span> <span class="kwd">set</span><span class="pln"> $rule_2 </span><span class="lit">1</span><span class="pun">;</span> <span class="pun">}</span> <span class="kwd">if</span> <span class="pun">(</span><span class="pln">$rule_2 </span><span class="pun">=</span> <span class="str">"1"</span><span class="pun">){</span> <span class="com">#ignored: "-" thing used or unknown variable in regex/rew </span> <span class="pun">}</span><span class="pln"> rewrite </span><span class="pun">^</span><span class="str">/([_0-9a-zA-Z-] /</span><span class="pun">)?(</span><span class="pln">wp</span><span class="pun">-(</span><span class="pln">content</span><span class="pun">|</span><span class="pln">admin</span><span class="pun">|</span><span class="pln">includes</span><span class="pun">).*)</span> <span class="pun">/</span><span class="pln">$2 </span><span class="kwd">last</span><span class="pun">;</span><span class="pln"> rewrite </span><span class="pun">^</span><span class="str">/([_0-9a-zA-Z-] /</span><span class="pun">)?(.*</span><span class="pln">\.php</span><span class="pun">)</span><span class="pln">$ </span><span class="pun">/</span><span class="pln">$2 </span><span class="kwd">last</span><span class="pun">;</span><span class="pln"> rewrite </span><span class="pun">/.</span> <span class="pun">/</span><span class="pln">index</span><span class="pun">.</span><span class="pln">php </span><span class="kwd">last</span><span class="pun">;</span> <span class="pun">}</span><span class="pln"> rewrite </span><span class="pun">/</span><span class="pln">wp</span><span class="pun">-</span><span class="pln">admin$ $scheme</span><span class="pun">:</span><span class="com">//$host$uri/ permanent;</span> |
建议另存为模板,比如命名为 WordPress多站点伪静态 都可以,以免每次都要配置一遍!
OK,大功告成,这时候我们重新登录进入后台主站点设置固定链接,结果发现默认增加了blog前缀
这可不是想要的结果,我们在左上角我的站点
→ 管理网络
→ 站点(所有站点)
→ 主站点
→ 编辑
→ 设置
里面找到 Permalink Structure
将前面的 /blog
删掉即可
记得在最下方点击保存,这样就可以完美去除 WordPress多站点 /blog 前缀,同时不会添加index.php,搞定收工!