nginx_locationANDrewrite

nginx location

Location匹配规则

语法规则: 【= | ^~ | ~ | ~* | / | /uri 】

location = /uri = 表示精确匹配,只有完全匹配上才能生效,若找到,停止搜索;

location ^~ /uri ^~开头表示对URL路径进行前缀匹配,并且在正则匹配之前,若找到,停止搜索;

location ~ pattern ~开头表示区分大小写的正则匹配,按配置文件顺序匹配;

location ~* pattern ~*开头表示不区分大小写的正则匹配,按配置文件顺序匹配;

location /uri 不带任何修饰符,表示前缀匹配,在正则匹配之后;

location / 通用匹配,任何未匹配到其他location的请求都会匹配到,相当于default;

多个location配置的情况匹配顺序为

首先精确匹配 = ;

其次前缀匹配 ^~;

其次是按照配置文件中的正则匹配;

然后匹配不带任何修饰符的前缀匹配;

最后交给/通用匹配

注意点:

^~无法使用正则匹配

rewrite:

rewrite [flag];

关键字 正则 替代内容 flag标记

关键字:其中关键字error_log不能改变

正则:perl兼容正则表达式语句进行规则匹配

替代内容:将正则匹配的内容替换成replacement

flag标记:rewrite支持的flag标记

flag标记说明:

last #本条规则匹配完成后,继续向下匹配新的location URI规则

break #本条规则匹配完成即终止,不再匹配后面的任何规则

redirect #返回302临时重定向,浏览器地址会显示跳转后的URL地址

permanent #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址

rewrite参数的标签段位置:

server,location,if

例子:

rewrite ^/(.*) http://www.czlun.com/$1 permanent;

说明:

rewrite为固定关键字,表示开始进行rewrite匹配规则

regex部分是 ^/(.*) ,这是一个正则表达式,匹配完整的域名和后面的路径地址

replacement部分是http://www.czlun.com/$1 $1,是取自regex部分()里的内容。匹配成功后跳转到的URL。

flag部分 permanent表示永久301重定向标记,即跳转到新的 http://www.czlun.com/$1 地址上

这里匹配的时候如果不是break最好要让其重写后不再会匹配回来,否则会无限重写。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!