Nginx Web Server下Discuz X的伪静态规则

自从玩VPS以来,一直使用的是LNMPA网站架构,昨天心血来潮,考虑到LNMP可以减缓服务器负担,于是,就从LNMPA架构转战LNMP架构。其实相差不大,但是在伪静态规则上却犯迷糊了。分享一下,希望能帮助到向我一样的朋友。

既然换成了LNMP架构,那么Apache下的.htaccess伪静态规则就不能用在LNMP下,需要使用Nginx伪静态规则。以Discuz X3为例:

虚拟主机配置文件在:/usr/local/nginx/conf/vhost/域名.conf
伪静态规则文件需要放在/usr/local/nginx/discuz X.conf/ 下面

设置伪静态的时候,我们在root /home/wwwroot/www.xxxxxx.com.conf;这一行下面添加:
include discuz.conf;

20140224185413然后把Discuz X后台伪静态规则复制到/usr/local/nginx/conf/discuz.conf 中

rewrite ^([^.]*)/topic-(.+).html$ $1/portal.php?mod=topic&topic=$2 last;
rewrite ^([^.]*)/article-([0-9]+)-([0-9]+).html$ $1/portal.php?mod=view&aid=$2&page=$3 last;
rewrite ^([^.]*)/forum-(w+)-([0-9]+).html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;
rewrite ^([^.]*)/thread-([0-9]+)-([0-9]+)-([0-9]+).html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last;
rewrite ^([^.]*)/group-([0-9]+)-([0-9]+).html$ $1/forum.php?mod=group&fid=$2&page=$3 last;
rewrite ^([^.]*)/space-(username|uid)-(.+).html$ $1/home.php?mod=space&$2=$3 last;
rewrite ^([^.]*)/blog-([0-9]+)-([0-9]+).html$ $1/home.php?mod=space&uid=$2&do=blog&id=$3 last;
rewrite ^([^.]*)/?(fid|tid)-([0-9]+).html$ $1/index.php?action=$2&value=$3 last;
if (!-e $request_filename) {
return 404;
}

效果如下:

20140224185922-2

最后重新启动Nginx,执行/etc/init.d/nginx restart

后记,我怎么会搞不定呢。注意图一,安装完lnmp后,include discuz.conf,而在/usr/local/nginx/conf/下有discuz.conf和discuzX.conf。因为现在论坛一般使用Discuz X搭建,在复制伪静态规则的时候,我们很容易会放到discuzX.conf里面,而这和include discuz.conf是不对应的。因为疏忽很可能就会花很长时间在伪静态上。