rewrite 语法学习
什么是rewrite
nginx的rewrite主要功是实现URL地址重写。nginx的rewrite规则需要PCRE的支持,既可以通过Perl兼容正则表达式进行规则匹配。nginx在默认编译安装时就会安装rewrite。
rewrite的语法
Syntax: rewrite regex replacement [flag];
Default: —
Context: server, location, if
所属模块:rewrite
属于ngx_http_rewrite_module模块
语法简介:
rewrite
为关键字固定写法regex
为perl兼容正则表达式语句,用来进行规则匹配replacement
重写后的URLflag
rewrite支持的flag标记
可选的flag参数可以是其中之一:
rewrite
指令执行先后的顺序是其该指令在nginx配置文件中的出现的位置rewrite
指令在其正则表示式匹配的地方的只对部分域名后面的URL进行匹配
例: 当一个访问的URL为http://www.drjc.com/data/list.html
那么rewrite的regex
(正则表达式)匹配的为/data/list.html
- 如果
replacement
的字符串以http://
或https://
开头,nginx将结束执行过程,并返回给客户端一个重定向。 - 在对rewrite指令的last和break标志的使用可以参考下面的建议:
使用rewrite指令在根location(也就是 `location /`) 和server{}区块时建议使用`flag`标志为`last`标志;
如果在普通的location区块中必须不能使用last,建议使用break标志;
在if{}指令中建议使用break标志;
如果正则表达式中包含字符“{}”或者“;”整个正则表达式应该被包含在单引号或双引号的引用中;
- 如果replacement字符串包括新的请求参数,以往的请求参数会添加到新参数后面。如果不希望这样,在replacement字符串末尾加一个问号“?”,就可以避免
比如:
rewrite ^/users/(.*)$ /show?user=$1? last;