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 [flag];

       如果指定的正则表达式能够匹配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.ra  break;
}

    上面例子就是两个重定向的例子,当URI中包含download|DOWNLOAD时,请求media中的文件,重定向到mp3文件夹中对应的文件;请求audio中的文件时,返回mp3中对应的文件。其中$1引用第一个括号中的文件名,$2引用第二个括号中的文件名。


location ~* /nba/ {
    rewrite ^/nba/?$ /newnba/ permanent;
}

    这是一个永久重定向的例子,其中“?”匹配表示匹配他之前的字符零次或多次.


你可能感兴趣的:(nginx,重定向,rewrite)