| key | value |
|---|---|
| 语法: | rewrite regex replacement [flag]; |
| 默认值: | — |
| 上下文: | server, location, if |
last # 停止执行当前这一轮的ngx_http_rewrite_module指令集,然后查找匹配改变后URI的新location;break # 停止执行当前这一轮的ngx_http_rewrite_module指令集;redirect # 在replacement字符串未以“http://”或“https://”开头时,使用返回状态码为302的临时重定向;permanent # 返回状态码为301的永久重定向。针对于last 和 break 举例
先测试last
nginx配置
location ~ /rewrite/last {
rewrite .* /rewrite/break.html last;
}
location ~ /rewrite/break {
retorn 200 'break';
rewrite .* /last.html break;
}
GET http://test.tyloafer.cn/rewrite/last
结果: break
上面结果表明,当我们第一次请求匹配到 /rewrite/last 的时候,我们此时应该把uri 重写成了 http://test.tyloafer.cn/rewrite/break.html, 然后拿着这个uri后找 nginx解析,从而匹配到了 第二个location
即, 当我们使用 last 的时候,nginx会拿着解析后的uri再次进行解析
再测试last
nginx配置
location ~ /rewrite/last {
return 200 'last';
rewrite .* /rewrite/break.html last;
}
location ~ /rewrite/break {
rewrite .* /last.html break;
}
last.html
this is last.html
GET http://test.tyloafer.cn/rewrite/break
结果: this is last.html
上面结果表明,当我们第一次请求匹配到 /rewrite/break的时候,我们此时应该把uri 重写成了http://test.tyloafer.cn/rewrite/blast.html`, 然后拿着这个uri后, 直接去找相应的文件了
即, 当我们使用 break 的时候,nginx会拿着解析后的uri不在解析,就随他去吧