在之前的文章中我们介绍过在Apache服务器上如何配置伪静态的方法,今天接着介绍在nignx服务器上伪静态规则的配置方法。
nginx里使用伪静态是直接在nginx.conf中写规则的,并不需要像apache要开启写模块(mod_rewrite)才能进行伪静态。
nginx只需要打开nginx.conf配置文件或自己单独的配置文件,在server里面写需要的规则即可。示例:
server{
listen80;
#...
#下面就是伪静态了
location/{
if(!-e$request_filename){
rewrite^(.*)$/index.php?s=$1last;
break;
}
}
#......
}
然后重启nginx服务器伪静态就OK了。
不过一般情况下直接在配置文件中添加伪静态规则不方便维护,所以通常会把伪静态配置写在外部文件中,再在配置文件中include进来。
上面的代码可以改进如下:
首先创建外部文件:/usr/local/nginx/conf/rewrite/thinkphp.conf,
然后把自己的规则代码写进去,如:
location/{
if(!-e$request_filename){
rewrite^(.*)$/index.php?s=$1last;
break;
}
}
然后将上面的示例伪静态规则代码改成include代码:
server{
listen80;
#...
#下面就是伪静态了
include/usr/local/nginx/conf/rewrite/thinkphp.conf;
#......
}
这样网站根目录中的伪静态规则就OK了。
补充说明:
实现伪静态,实际用的是rewrite重定向url;
rewrite语法:rewriteregexreplacementflag;
regex:是你要匹配url地址的正则(正则表达式我在这里就不介绍了)
replacement:是你要重定向的url地址
flag:标志位,有以下几种:
1)last:相当于Apache的[L]标记,表示完成rewrite,最常用
2)break:停止执行当前虚拟主机的后续rewrite指令集
3)redirect:返回临时重定向,地址栏会显示跳转后的地址
4)permanent:返回永久重定向,地址栏会显示跳转后的地址