抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

记一次Nginx上同时部署WordPress、 ThinkPHP5 和 普通系统,其中WordPress使用目录多站点

这次系统部署主要遇到以下四个问题,以至于花费比较长的时间,但总的来说还是因为对nginx配置相对不熟练。
  • wordpress本身路由特点,wordpress在建站时会把网站的根地址存在数据库的wp_options表的siteurl、home、ossdl_off_cdn_url和ossdl_off_blog_url字段中,路由都是从数据库中读取。所以nginx无论怎么修改配置都是测试不了问题的。
  • wordpress域名多站点与目录多站点存在着不同之处,安装wp目录多站点时,必须要停用所有插件再开启。
  • wp目录多站点的重写规则,由于wp路由的特殊性,wp在nginx的配置会覆盖其他系统的配置,所以访问uri时必须首先重写其他系统的uri。又由于存在wp,tp5,以及原生系统,三种不同路由的规则,一开始服务器配置又经过许多人手,配置起来比较凌乱。
  • 由于在编译安装nginx时,没有装上echo输出,在我们调试正则表达式规则重写uri时候带来了很多麻烦,需要改不同的正则表达式,然后查看log文件,站点访问情况等摸索它的重写规律。

以下是配置文件内容:

RoomReserver 是普通系统,tpmas是ThinkPHP5系统
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
#RoomResever rewrite rule
rewrite ^/RoomReserve/(.*)$ /RoomReserve/$1 break;

#tpmas rewrite rule
if ( $request_uri ~* /tpmas/ ) {
rewrite ^/tpmas/public/index.php/(.*)$ /tpmas/public/index.php?s=/$1 last; break;
#rewrite ^/tpmas/public/index.php/(.*)$ /tpmas/public/index.php?s=/$1 last; break;
}

#wordpress rewrite rule
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;

评论