当前位置: 移动技术网 > 科技>操作系统>Linux > Nginx Rewrite规则

Nginx Rewrite规则

2019年05月20日  | 移动技术网科技  | 我要评论

1.基础知识点

(1)rewirte规则也称为 规则重写,主要功能是实现浏览器访问http url的跳转,其正则表达式是基于perl语言。

(2)对收缩引擎优化(seo),利于收索引擎抓取网站页面。

(3)隐藏网站url真实地址。

(4)网站变更升级,可以基于rewrite临时重定向到其他页面。

(5)有利于服务器实现伪静态。

2.rewrite结尾表示符

(1)last:相当于apache里的(l)标记,表示完成rewrite匹配。(浏览器地址栏url地址不变)

(2)break:本条规则匹配完成后,终止匹配,不再匹配后面的规则。(浏览器地址栏url地址不变)

(3)redirect:返回302临时重定向,浏览器地址栏会显示跳转后的url地址。

(4)permanent:返回301永久重定向,浏览器地址栏会显示跳转后的url地址。

3.rewrite规则常用表达式

(1)    匹配任何单字符;

(2)? 匹配0到1个字符;只匹配一次;

(3)*   匹配0到多个字符;

(4)+  匹配1到多个字符;

 

(5)[0-9]  匹配字符串0-9

(6)[^0-9] 不匹配字符串0-9

(7)^  字符串开始标志

(8)$ 字符串结束标志

(9)\n 转义换行标志

4.nginx rewrite变量常用于匹配http请求头信息、浏览器主机名、url等。

5.rewrite配置在nginx的location块中;

(1)将dks.net跳转至www.dks.net

if($host='dks.net')    {
    rewrite ^/(.*)$    http://www.dks.net/$1     permanent;
    }
  # $host内置nginx变量,匹配用户访问的域名
  # $1表示引用第一个括号的内容,是用户输入的内容;如果不使用$1引用,则只会匹配根

(2)将访问www.dks.net跳转至www.test.com/new.

rewrite    ^/$    http://www.test.com/new.     permanent;

(3)访问 /dks/test01/跳转至/new,浏览器地址不变

rewrite    ^/dks/test01/$    /new    last;

(4)多域名跳转 www.dks.net

if($host!='www.dks.net')    {
    rewrite    ^/(.*)$    http://www.dks.net/$1    permanert;
    }

(5)访问文件和目录不存在跳转至index.php

  !-f 和 -f 判断文件

  !-d 和 -d 判断目录

  !-e 和 -e 判断文件和目录

  !-x 和 -x 判断文件是否可执行

if(!-e    $request filename)    {
    rewrite    ^/(.*)    /index.php    last;
    }

(6)目录对换 /xxx/123456——> /xxx?id=123456

  \d+ 代表匹配数字,相当于[0-9]

rewrite    ^/(.+)/(\d+)    /$1?id=$2    last;

(7)判断浏览器user agent跳转

if($http_user_agent    ~msie)    {
    rewrite ^(.*)$/ie/$1  break;
    }

(8)禁止访问以.sh | .flv  |  .mps为文件后缀的文件

location ~.*\.(sh|flv|mp3)$    {
    return 403;
    }

(9)将移动用户访问跳动至移动端。

if($http_user_agent ~*  "(android)|(iphone)|(mobile)|(wap)|(ucweb)")    {
    rewrite ^/$    http://m.dks.net/    permanent;
    }

(10)匹配url访问字符串跳转

if($args ~* tid=13)    {
    return 404;
    }

(11)访问/10690/dks/123  跳转至/index.php?tid/10690/items=123

rewrite    ^/([0-9]+)/dks/(.+)$    /index.php?tid/$1/items=$2    last;

 6.多rewrite规则跳转

rewrite ^/dks/(.*)/$ /new permanent;  #可以跳转
rewrite ^/new$ /dks/test01/ permanent;
rewrite ^/dks/(.*)/$ /new break;    #break 终止跳转,执行下一条rewrite规则
rewrite ^/new$ /dks/test01/ permanent;
rewrite ^/dks/(.*)/$ /new last;    #last  跳转,但下面那条rewrite规则匹配不上,因为last使地址栏url地址不变,所以下面的那条rewrite规则匹配不上;
rewrite ^/new$ /dks/test01/ permanent;    #此条规则匹配不上上边的url地址

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网