rewrite指令在Nginx配置文件里面是用于重写的,有点像PHP框架里面的路由配置。
下面内容从官方文档翻译:
语法 : rewrite regex replacement [flag];
默认值: 无
所处环境: server, location, if
如果指定的正则表达式(regex)与请求URI匹配,则URI将更改为替换字符串(replacement)中指定的URI。rewrite重写指令是按照它们在配置文件中的出现顺序执行的。可以使用标志终止对指令的进一步处理。如果替换字符串(replacement)以”http:/“、”https:/“ 或 “$plan”开头,则处理停止并将重定向返回给客户端。
一个可选的标志参数(flag)可以是:
完整的重定向URL是根据请求方案($plan)和 server_name_in_redirective 和 port_in_redirect 指令形成的。
示例:
server {
...
rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last;
rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra last;
return 403;
...
}
但是,如果将这些指令放在”/Download/“位置中,则应将最后一个标志替换为 break,否则nginx将进行10次循环并返回500错误:
location /download/ {
rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 break;
rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra break;
return 403;
}
如果替换字符串(replacement)包括新的请求参数,则在它们后面追加前一个请求参数。如果这是不想要的,那么在替换字符串的末尾添加问号可以避免将它们追加,例如:
rewrite ^/users/(.*)$ /show?user=$1? last;
如果正则表达式包括“}”或“;”字符,则整个表达式应以单引号或双引号括起来。
本文标签: Nginx
暂无评论,赶紧发表一下你的看法吧。