当前位置:文档之家› nginx设置rewrite规则

nginx设置rewrite规则

Nginx 设置rewrite规则
Windows下环境为wamp ,在wamp 环境下,设置rewite规则时,很是简单,只需要打开Apache配置中的rewrite规则,项目中使用rewrite规则时只需创建.htaccess文件,在文件中编写规则,Apache会自动进行解析,但是在linux下则有些不一样。

Linux下环境若是lamp,则和wamp下是相同的,但当环境为lnmp时,需要注意进行如下配置方法:
根据所安装的环境情况,如果环境是lnmp集成环境,在配置rewrite规则时,因为集成环境,在安装完毕后,在安装的目录/usr/local/nginx/conf下,会生成一个文件“wordparss”,这个文件中是专门用于写rewrite规则所用,你可以在这个文件中书写rewrite规则,nginx 的rewrite规则与Apache的规则基本是相同的,只是在文件中书写的方法不同,wordpaess 问件中默认是有一个规则的,如:
利用location加载访问路径,“/”,指代由访问路径的根目录开始,
用if对加载的路径$request_filename 进行验证:
1 、-f 和!-f 用来判断文件是否存在
2、-d 和!-d 用来判断目录是否存在
3 、-e 和!-e 用来判断文件或目录是否存在
4、-x 和!-x 用来判断文件是否可执行
Flag标记:
1、last 相当于Apache里的[L]标记,表示完成rewrite
2、break 终止匹配, 不再匹配后面的规则
3、redirect 返回302临时重定向地址栏会显示跳转后的地址
4、permanent 返回301永久重定向地址栏会显示跳转后的地址
因为在lnmp集成环境下要配置虚拟域名是可以进行自动生成的,生成后会在/usr/local/nginx/conf/vhost 下生成一个以虚拟域名的名字的文件,如:lin_hp.its.conf,而所对应的rewrite规则最好在与域名相对应的配置文件中进行配置,这样不会说,如果有多个域名时,他们所对应的rewrite规则不同,在公共的wordpress文件中配置引起冲突,所配置的方法与在wprdpress文件中是相同的,如:
像这样在中间加上
rewrite规则就可以
可以根据具体的访问路径进行规则定义,我所用的框架为thinkphp,想要引用这样的路经:http://lin_/Product/index/pid/35,就定义规则为rewrite ^(.*)$ /index.php/$1;就可以了,若要引用:http://lin_/index.php?s=/show的路径就定义规则为:rewrite ^(.*)$ /index.php?s=$1;这样就可以了。

如果lnmp环境不是集成性的,那么所书写的rewrite规则应该写在nginx.conf文件中,书写的方法lnmp集成环境是相同的,在配置文件中的每一个自定义的虚拟域名的server中进行写入。

相关主题