Notice: Trying to access array offset on value of type bool in /www/wwwroot/weimahe.com/wp-content/advanced-cache.php on line 472

Notice: Trying to access array offset on value of type bool in /www/wwwroot/weimahe.com/wp-content/advanced-cache.php on line 472
宝塔环境下开启WordPress多站点(含伪静态) - 微码盒
!
也想出现在这里? 联系我们
广告位

宝塔环境下开启WordPress多站点(含伪静态)

为什么最近微码盒开始研究多站点了呢,因为多站点不用每次开个网站都要重新安装 WordPress,并且最重要的是可以多个 WordPress 网站之间用户数据共享,这才是缙哥哥想要的。否则以多站点大量插件不兼容的问题,缙哥哥是一点也不喜欢!

开启 WordPress 多站点网络配置

首先建议全新安装一个站点,并在网站根目录下的 wp-config.php 添加如下代码

  1. /* 开启 WordPress 多站点配置 - https://www.dujin.org/12501.HTML */
  2. define('WP_ALLOW_MULTISITE', true);

缙哥哥建议将上述代码复制到下方描述的位置上面。

  1. /* 好了!请不要再继续编辑。请保存本文件。使用愉快! */

配置多站点网络

由于微码盒实际操作为子目录形式,在此着重讲解。在上述“开启多站点配置”代码的下方,添加

  1. define('MULTISITE', true);
  2. define('SUBDOMAIN_INSTALL', false);
  3. define('DOMAIN_CURRENT_SITE', 'yourdomain.com');
  4. define('PATH_CURRENT_SITE', '/');
  5. define('SITE_ID_CURRENT_SITE', 1);
  6. define('BLOG_ID_CURRENT_SITE', 1);

Apache 伪静态规则

在宝塔网站设置的伪静态中设置相关代码,将下方代码加入网站根目录中的 .htaccess 文件中,替换其他 WordPress 规则:

  1. RewriteEngine On
  2. RewriteBase /
  3. RewriteRule ^index\.php$ - [L]
  4. # add a trailing slash to /wp-admin
  5. RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
  6. RewriteCond %{REQUEST_FILENAME} -f [OR]
  7. RewriteCond %{REQUEST_FILENAME} -d
  8. RewriteRule ^ - [L]
  9. RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
  10. RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
  11. RewriteRule . index.php [L]

Nginx 伪静态规则

由于 WordPress 默认提供的是 apache 的伪静态规则,所以这里微码盒利用 宝塔规则转换工具:Apache 转 Nginx 进行转换,得到如下规则:

  1. #ignored: "-" thing used or unknown variable in regex/rew
  2. rewrite ^/([_0-9a-zA-Z-]+/)?wp-admin$ /$1wp-admin/ permanent;
  3. if (-f $request_filename){
  4. set $rule_2 1;
  5. }
  6. if (-d $request_filename){
  7. set $rule_2 1;
  8. }
  9. if ($rule_2 = "1"){
  10. #ignored: "-" thing used or unknown variable in regex/rew
  11. }
  12. rewrite ^/([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) /$2 last;
  13. rewrite ^/([_0-9a-zA-Z-]+/)?(.*\.php)$ /$2 last;
  14. rewrite /. /index.php last;

完整 Nginx 伪静态规则

然而,微码盒才添加后发现并不能访问网站,研究许久,发现需要在原本的 WordPress 伪静态规则之上进行添加,在此,列出完整的 WordPress 多站点 Nginx 伪静态规则,小伙伴们可根据本教程结合自己的实际情况进行调整。

  1. location / {
  2. index index.html index.php;
  3. if (-f $request_filename/index.html){
  4. rewrite (.*) $1/index.html break;
  5. }
  6. if (-f $request_filename/index.php){
  7. rewrite (.*) $1/index.php;
  8. }
  9. if (!-f $request_filename){
  10. rewrite (.*) /index.php;
  11. }
  12. #ignored: "-" thing used or unknown variable in regex/rew
  13. rewrite ^/([_0-9a-zA-Z-]+/)?wp-admin$ /$1wp-admin/ permanent;
  14. if (-f $request_filename){
  15. set $rule_2 1;
  16. }
  17. if (-d $request_filename){
  18. set $rule_2 1;
  19. }
  20. if ($rule_2 = "1"){
  21. #ignored: "-" thing used or unknown variable in regex/rew
  22. }
  23. rewrite ^/([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) /$2 last;
  24. rewrite ^/([_0-9a-zA-Z-]+/)?(.*\.php)$ /$2 last;
  25. rewrite /. /index.php last;
  26. }
  27. rewrite /wp-admin$ $scheme://$host$uri/ permanent;

微码盒建议另存为模板,比如命名为 WordPress 多站点伪静态 都可以,以免每次都要配置一遍!

OK,大功告成,这时候我们重新登录进入后台主站点设置固定链接,结果发现默认增加了 blog 前缀:

这可不是想要的结果,我们在左上角我的站点 → 管理网络 → 站点(所有站点) → 主站点 → 编辑 → 设置里面找到 Permalink Structure 将前面的 /blog 删掉即可

记得在最下方点击保存,这样就可以完美去除 WordPress 多站点 /blog 前缀,同时不会添加 index.php,搞定收工!

给TA打赏
共{{data.count}}人
人已打赏
WordPress教程

WordPress 后台菜单添加气泡通知

2024-3-26 2:34:37

WordPress教程

代码禁用 Gutenberg(古腾堡) 编辑器

2024-3-27 11:38:12

下载说明

  • 1、微码盒所提供的压缩包若无特别说明,解压密码均为weimahe.com
  • 2、下载后文件若为压缩包格式,请安装7Z软件或者其它压缩软件进行解压;
  • 3、文件比较大的时候,建议使用下载工具进行下载,浏览器下载有时候会自动中断,导致下载错误;
  • 4、资源可能会由于内容问题被和谐,导致下载链接不可用,遇到此问题,请到文章页面进行反馈,以便微码盒及时进行更新;
  • 5、其他下载问题请自行搜索教程,这里不一一讲解。

站长声明

本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有;若为付费资源,请在下载后24小时之内自觉删除;若作商业用途,请到原网站购买;由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系本站删除,我们将及时处理!
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索