2 rewrite指令
Syntax: rewrite regex replacement [flag];
Default:
—
Context: server, location,
功能
- 将regex指定的url替换成replacement这个新的url 可以使用正则表达式及变量提取
- 当replacement以http://或者https://或者$schema开头,则直接返回302重定向
- 替换后的url根据flag指定的方式进行处理
如果在同一级配置块中存在多个rewrite规则,那么会自下而下逐个检查;被某条件规则替换完成后,会重新一轮的替换检查,因此,隐含有循环机制;[flag]所表示的标志位用于控制此循环机制;
- last:
- 浏览器地址栏URL地址不变
- 用replacement这个URI进行新的location匹配,重写完成后停止对当前URI在当前location中后续的其它重写操作,而后对新的URI启动新一轮重写检查;提前重启新一轮循环;
- beak:
- 浏览器地址栏URL地址不变
- break指令停止当前脚本指令的执行,等价于独立的break指令,重写完成后停止对当前URI在当前location中后续的其它重写操作,而后直接跳转至重写规则配置块之后的其它配置;结束循环;
- redirect:
- 浏览器地址会显示跳转后的URL地址
- 返回302临时重定向,
- permanent:
- 浏览器地址会显示跳转后的URL地址
- 返回301永久重定向
- last:
功能一句话概括为:使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。