Nginx_Rewrite
- 一、介绍Rewrite
Rewrite根据nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写和者重定向。
Rewrite和location类似,都可以实现跳转,区别是rewrite是在同一域名内更改url,而location是对同类型匹配路径做控制访问,或者proxy_pass代理到其他服务器。Rewrite和location执行顺序:执行server下的rewrite执行location匹配执行location下的rewrite二、语法和参数说明
- rewrite语法格式
rewrite ; 关键字 正则表达式 代替的内容 重写类型Rewrite:一般都是rewriteRegex:可以是字符串或者正则来表示想要匹配的目标URLReplacement:将正则匹配的内容替换成replacementFlag:flag标示,重写类型: - last:本条规则匹配完成后,继续向下匹配新的location URI规则;相当于Apache里德(L)标记,表示完成rewrite,浏览器地址栏URL地址不变;一般写在server和if中; - break:本条规则匹配完成后,终止匹配,不再匹配后面的规则,浏览器地址栏URL地址不变;一般使用在location中; - redirect:返回302临时重定向,浏览器地址会显示跳转后的URL地址; - permanent:返回301永久重定向,浏览器地址栏会显示跳转后的URL地址;
server { # 访问 /last.html 的时候,页面内容重写到 /index.html 中,并继续后面的匹配,浏览器地址栏URL地址不变 rewrite /last.html /index.html last; # 访问 /break.html 的时候,页面内容重写到 /index.html 中,并停止后续的匹配,浏览器地址栏URL地址不变; rewrite /break.html /index.html break; # 访问 /redirect.html 的时候,页面直接302定向到 /index.html中,浏览器地址URL跳为index.html rewrite /redirect.html /index.html redirect; # 访问 /permanent.html 的时候,页面直接301定向到 /index.html中,浏览器地址URL跳为index.html rewrite /permanent.html /index.html