1. 语法:rewrite regex(表达式) replacement(替换项) flag(标志位)。 2. 尾部的标记flag可以是以下的值: last: 相当于apache里面的[L]标记,表示rewrite,完成重写指令,之后搜索相应的URI或location break: 本条规则匹配完成后,终止匹配,不再匹配后面的规则。 redirect: 返回302临时重定向,浏览器地址会显示跳转后的URL地址。 permanent: 返回301永久重定向,浏览器地址会显示跳转后的URL地址 3. last与break的区别: last: 停止当前这个请求,并根据rewrite匹配的规则重新发起一个请求。新请求又从第一阶段开始执行 break:相对last,break并不会重新发起一个请求,只是跳过当前的rewrite阶段,并执行本请求后续的执行阶段 例:server { listen 80; server_name test.com; root /www; location /break/ { rewrite ^/break/(.*) /test/$1 break; echo "break page"; } location /last/ { rewrite ^/last/(.*) /test/$1 last; echo "last page"; } location /test/ { echo "test page"; }
请求:http://test.com/break/*
请求: http://test.com/last/*
说明:last与break最大的不同是,last会重新发起一个新请求,并重新匹配location,所以对于/last,重新匹配请求以后会匹配到/test/,所以最终对应的输出是test page |