server { listen 80; default_type text/plain; server_name pcre.haosheng.vip; root html; index index.html; location / { echo "pcre.haosheng.vip"; return 301 http://haosheng.cn; } # rewrite break location ~ /break/ { # rewrite break - url重写后,直接使用当前资源,不再执行location里余下的语句,完成本次请求,地址栏url不变 rewrite /break/(d+)$ /test?t=$1 break; rewrite /break/(w+)$ /test?t=$1 break; echo "name = $request_uri"; echo "name = $uri?$args"; } # rewrite last location ~ /last/ { # url重写后,马上发起一个新的请求,再次进入server块,重试location匹配,超过10次匹配不到报500错误,地址栏url不变 # last标识 会终止当前location其他阶段的执行 用rewrite后的uri去匹配location # 最终访问到 location /test {} rewrite /last/(d+)$ /test?t=$1 last; rewrite /last/(w+)$ /test?t=$1 last; echo "name = $request_uri"; echo "name = $uri?$args"; } location /test { echo "test = $request_uri"; echo "test = $uri?$args"; } # rewrite redirect location /redirect { # 返回302临时重定向,地址栏显示重定向后的url,爬虫不会更新url(因为是临时) rewrite /redirect /test redirect; } # rewrite permanent location /permanent { # 返回301永久重定向, 地址栏显示重定向后的url,爬虫更新url rewrite /permanent /test permanent; } }