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不在解析,就随他去吧