什么是Nginx rewrite
Nginx rewrite 的主要功能是实现URL地址重写,Nginx的rewrite规则需要PCRE软件的支持,即通过Perl兼容正则表达式语法进行规则匹配。
Nginx rewrite 语法
1、rewrite 指令语法: rewrite regex replacement [flag];
默认值: none
应用位置: server、location、if
rewrite是实现URL重写的关键指令,根据regex(正则表达式)部分的内容,重定向到replacement部分,结尾是flag标记
rewrite ^/(.*) http://www.test.com/$1 permanent;
上述指令中,rewrite为固定关键字,表示开启一条rewrite匹配规则,regext部分是^/(.*),这是一个正则表达式,表示匹配所有,匹配成功后跳转到http://www.test.com/$1.这里的$1是取前面regex部分括号里的内容,结尾的permanent;是永久301重定向标记,即跳转到后面的http://www.test.com/$1地址上。
2、regex常用正则表达式说明
3、rewrite指令结尾的flag标记说明
flag标记符号 | 说明 | 应用场景 |
---|---|---|
last | 本条规则匹配完成后,继续向下匹配新的location URI规则 | |
break | 本条规则匹配完成后即终止,不再匹配后面的任何规则 | |
redirect | 返回302临时重定向,浏览器地址栏会显示跳转后的URL地址 | |
permanent | 返回301永久重定向,浏览器地址栏会显示跳转后的URL地址 |
last和break用来实现URL重写,浏览器地址栏的URL地址不变,但在服务器端访问的程序及路径发生了变化。
redirect和permanent用来实现URL跳转,浏览器地址栏会显示跳转后的URL地址。
使用alias指令是必须用last标记,使用proxy_pass指令时要使用break标记。
last标记在本条rewrite规则执行完毕后,会对其所在的server{...}标签重新发起请求,而break标记则会在本条规则匹配完成后,终止匹配,不在匹配后面的规则。
4、不同flag的配置案例,以及测试结果展示;(待整理)