天天看点

nginx访问重定向rewrite

       nignx中使用ngx_http_rewrite_module模块进行URL重写,返回页面重定向,按条件选择配置。编译安装nginx时默认已启用此模块。

   一般在server中定义rewite指令,为请求查找location,如果符合定义的规则,就重定向URI,按照新的URI查找location。

   if (CONDITION) {...}

   条件匹配规则:

“=”或“!=”    进行精确匹配

当使用“~”或“~*”时,匹配条件中可以使用变量和正则表达式,正则表达式可以包含匹配组,匹配结果后续可以使用变量$1,..,$9引用。“~”匹配时区分大小写;“~*”匹配时不区分大小写。

使用“<code>-f</code>”和“<code>!-f</code>”运算符检查文件是否存在。

使用“<code>-d</code>”和“<code>!-d</code>”运算符检查目录是否存在。

使用“<code>-e</code>”和“<code>!-e</code>”运算符检查文件、目录或符号链接是否存在。

使用“<code>-x</code>”和“<code>!-x</code>”运算符检查可执行文件;

rewrite regex replacement [flag];

   如果指定的正则表达式能够匹配URI,此URI将被replacement定义的字符串改写。flag指定对指令做限制,flag可以为一下四个中的一种:

last 当前指令执行完后,继续执行下面的指令集。

break 当前指令执行完后,即跳出指令集,不再执行下面的指令。

redirect 临时重定向,302。

permanent 永久重定向,301。

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

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

继续阅读