elixiat 发表于 2018-11-14 08:02:00

nginx访问重定向rewrite

  nignx中使用ngx_http_rewrite_module模块进行URL重写,返回页面重定向,按条件选择配置。编译安装nginx时默认已启用此模块。
  一般在server中定义rewite指令,为请求查找location,如果符合定义的规则,就重定向URI,按照新的URI查找location。
  if (CONDITION) {...}
  条件匹配规则:


[*]  “=”或“!=”    进行精确匹配
[*]  当使用“~”或“~*”时,匹配条件中可以使用变量和正则表达式,正则表达式可以包含匹配组,匹配结果后续可以使用变量$1,..,$9引用。“~”匹配时区分大小写;“~*”匹配时不区分大小写。
[*]  使用“-f”和“!-f”运算符检查文件是否存在。
[*]  使用“-d”和“!-d”运算符检查目录是否存在。
[*]  使用“-e”和“!-e”运算符检查文件、目录或符号链接是否存在。
[*]  使用“-x”和“!-x”运算符检查可执行文件;
  rewrite regex replacement ;
  如果指定的正则表达式能够匹配URI,此URI将被replacement定义的字符串改写。flag指定对指令做限制,flag可以为一下四个中的一种:

[*]  last 当前指令执行完后,继续执行下面的指令集。
[*]  break 当前指令执行完后,即跳出指令集,不再执行下面的指令。
[*]  redirect 临时重定向,302。
[*]  permanent 永久重定向,301。

location ~* /download/ {  
rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 break;
  
rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.rabreak;
  
}
  上面例子就是两个重定向的例子,当URI中包含download|DOWNLOAD时,请求media中的文件,重定向到mp3文件夹中对应的文件;请求audio中的文件时,返回mp3中对应的文件。其中$1引用第一个括号中的文件名,$2引用第二个括号中的文件名。
location ~* /nba/ {  
rewrite ^/nba/?$ /newnba/ permanent;
  
}
  这是一个永久重定向的例子,其中“?”匹配表示匹配他之前的字符零次或多次.


页: [1]
查看完整版本: nginx访问重定向rewrite