Rewrite重写URL

  1. Rewrite重写用来做些什么
    URL重写就是首先获得一个进入的URL请求,然后使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位把它重新写成网站可以处理的另一个URL的过程。rewrite只能放在配置文件的server{},location{},if{}中,并且只能对域名后边的除去传递的参数外的字符串起作用。
  2. Rewrite执行顺序
    1.执行server块的rewrite指令
    2.执行location匹配
    3.执行选定的location中的rewrite指令
    4.执行if条件匹配
    5.执行if块中的rewrite指令
  3. rewrite语法
    image_1d5142otn17uq1lmmhis17l21jr52a.png-4kB
    关键字:其中关键字error_log不能改变
    正则: perl兼容正则表达式语句进行规则匹配
    替代内容:将正则匹配的内容替换成repl acement
    filag标记: rewrite支持的fl ag标记
    flag标记说明:
    Last #本条规则匹配完成后,继续向下匹配新的location URI规则
    break #本条规则匹配完成即终止,不再匹配后面的任何规则
    redirect #返回302临时重定向,浏览器地址会显示跳转后的URL.地址
    permanent #返回301永久重定向,浏览器地址栏会显示跳转后的URL她址
  4. 指令详解
    1.if指令
    语法为if(condition){…}
    condition常用判断条件:
    -f和!-f用来判断请求文件是否存在
    -d和!-d用来判断请求目录是否存在
    -e和!-e用来判断是请求的文件或者目录否存在
    -x和!-x用来判断请求的文件是否可执行
    condition可用的nginx变量:
    image_1d518ruaobbb1vcict8pvjal03h.png-810.5kB
    2.break指令
    用于中断当前相同作用域中的Nginx配置,和Java中的break语法类似,可以在server块和location以及if块中使用。
    3.return指令
    该指令用于完成对请求的处理,直接向客户端响应状态的代码。和Java中的return语法类似。可以再server块和location以及if块中使用。
    4.set指令
    用来设置新的变量
      语法: set variable value