网站首页linux
Nginx rewrite重定向, 显式跳转与隐式跳转
发布时间:2020-12-16 06:08:52编辑:slayer.hover阅读(5466)
将url地址
http://web.com/goods/159684.html
重定向到
http://web.com/goods/view?id=159684
1.显式跳转,直接使用permanent或redirect
location ~* ^/goods/[\d]+ { rewrite ^/goods/([\d]+) http://web.com/goods/view?id=$1 last; }
或
location ~* ^/goods/[\d]+ { rewrite ^/goods/([\d]+) http://web.com/goods/view?id=$1 break; }
或
location ~* ^/goods/[\d]+ { rewrite ^/goods/([\d]+) /goods/view?id=$1 redirect; }
或
location ~* ^/goods/[\d]+ { rewrite ^/goods/([\d]+) /goods/view?id=$1 permanent; }
上面四条任选其一即可,效果一样,会发现当前地址栏url已经发生改变。
2.隐式跳转
location ~* ^/goods/[\d]+ { rewrite ^/goods/([\d]+) /goods/view?id=$1 break; proxy_pass http://web.com; }
地址栏url没有变化,页面已是新的地址返回内容,这里实际上使用的是一个proxy_pass反向代理。
注:使用proxy_pass指令时,需要使用break标记;
------------------------------------rewrite之flag参数------------------------------------
last:本条规则匹配完成后,本location{}里后续rewrite/return规则不执行,但重写后的url再次从头开始执行所有规则。
break:本条规则匹配完成后终止,本location{}与其他location{}的所有rewrite/return规则都不再执行。
redirect:返回302临时重定向
rewrite /(.*) http://web.com/$1 redirect;
等同于:
return 302 http://web.com$request_uri;
permanent:返回301永久重定向
rewrite /(.*) http://web.com/$1 permanent;
等同于:
return 301 http://web.com$request_uri;
return语句一般用于对请求的客户端直接返回响应状态码、字符串或者url链接。
注:return后面的url必须是以http://或者https://开头。
评论