nginx中使用rewrite重定向
条评论nginx
中配置重定向,虽然有下面这种写法
return 301 https://www.yourdomain.com$request_uri; |
但是仍不及rewrite
好用强大。其基本语法是
Syntax: rewrite regex replacement [flag]; |
举个例子
rewrite ^/(.*)$ https://www.qxnaqy.com permanent; |
rewrite
后面紧跟的是正则表达式,用来匹配url。而replacement
可以是http
开头的绝对路径,就会触发重定向。如果不是绝对路径,则默认是触发重写。
重定向与重写的区别是,前者是浏览器有感知的,通过302
、301
通知浏览器url资源发生了变化,由浏览器再次发起请求,访问目标路径;后者是浏览器无感知的,由nginx
延续接下来已改变的请求。
但是如果flag
指定了redirect
或者permanent
时,一定是触发的重定向。
文档中关于flag
的解释如下
last |
也就是说,如果想做301
重定向,务必使用permanent
,如果想做302
,根据replacement
的内容来决定是否使用redirect
。last
的意思是,命中更改的uri
之后,接着拿新的uri
尝试匹配。这就会出现一种情况,当新的uri
规则又满足之前匹配模式,就会进入一种死循环状态,所以就引入了break
。可以参考文档中的这段
The full redirect URL is formed according to the request scheme ($scheme) and the server_name_in_redirect and port_in_redirect directives. |
本文标题:nginx中使用rewrite重定向
文章作者:牧云踏歌
发布时间:2018-09-20
最后更新:2018-09-20
原始链接:http://www.kankanzhijian.com/2018/09/20/nginx_rewrite/
版权声明:本博客文章均系本人原创,转载请注名出处