首页 » 资源分享 » Linux » 正文

nginx伪静态规则配置的方法



伪静态只是改变了URL的显示形式,实际上还是网站页面还是动态页面。伪静态的页面后缀可以是html、htm或者是目录格式等。那么为什么要用伪静态呢?
一是为了seo优化,伪静态有利于搜索引擎的收录,能够增加网站优化效果;二是为了让URL看起来更简单,给人一种专业性的感觉。

而配置伪静态的方法,需要根据web服务器的不同来做不同的配置,一般常用的有Apache服务器和Nginx服务器,本篇仅介绍在Nginx服务器上配置伪静态的方法。Apache服务器配置伪静态的方法请移步《Apache开启伪静态和伪静态Rewrite》。

nginx里使用伪静态是直接在nginx.conf中写规则的,并不需要像apache要开启写模块(mod_rewrite)才能进行伪静态。
nginx只需要打开nginx.conf配置文件或自己单独的配置文件,在server里面写需要的规则即可。示例:
server {
listen 80;
#...
#.....
#.......
#下面就是伪静态了
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
#......
}

然后重启nginx服务器伪静态就OK了。

不过一般情况下直接在配置文件中添加伪静态规则不方便维护,所以通常会把伪静态配置写在外部文件中,再在配置文件中include进来。
上面的代码可以改进如下:
首先创建外部文件/usr/local/nginx/conf/rewrite/thinkphp.conf,把自己的规则代码写进去:
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}

然后将上面的示例伪静态规则代码改成include代码:

server {
listen 80;
#...
#.....
#.......
#下面就是伪静态了
include /usr/local/nginx/conf/rewrite/thinkphp.conf;
#......
}

这样网站根目录中的伪静态规则就OK了。

————————————————分割线———————————

补充说明:

实现伪静态,实际用的是rewrite重定向url
rewrite语法:rewrite regex replacement flag;
regex:是你要匹配url地址的正则(正则表达式我在这里就不介绍了)
replacement:是你要重定向的url地址
flag:标志位,有以下几种:
1)last : 相当于Apache的[L]标记,表示完成rewrite,最常用
2)break : 停止执行当前虚拟主机的后续rewrite指令集
3)redirect : 返回302临时重定向,地址栏会显示跳转后的地址
4)permanent : 返回301永久重定向,地址栏会显示跳转后的地址