nginx中rewrite flag
rewrite 正则表达式 新URI [flag];
rewrite regex replacement [flag]
-
[flag] 选项用于调控重写和重定向的行为,它的取值可能是:
-
last:重写完成后,会停止继续处理当前区块所有属于ngx_http_rewrite_module模块的语句(即不会继续匹配当前区块余下的rewrite语句或其它属于该模块的语句)。重写得到的新URL会重新匹配所有location语句,以进行进一步处理。
-
break:重写完成后,会停止继续处理当前区块所有属于ngx_http_rewrite_module模块的语句(即不会继续匹配当前区块余下的rewrite语句或其它属于该模块的语句),就像break命令一样,不会有进一步的动作。
-
redirect:重写完成后,返回带有302代码(临时重定向)的新URL给客户端,服务端处理完成。该flag只有在"新URI"不是完整的URL地址时才会生效,浏览器地址会显示跳转后的URL地址
-
permanent:重写完成后,返回带有301代码(永久重定向)的新URL给客户端,服务端处理完成,浏览器地址栏会显示跳转后的URL地址
last和break区别:
- 使用last和break实现URI重写,浏览器地址栏不变。
- 使用alias指令时必须使用last标记;使用proxy_pass指令时,需要使用break标记
- last标记在本条rewrite规则执行完毕后,会对其所在server{……}标签重新发起请求,而break标记则在本条规则匹配完成后,终止匹配