The ngx_http_rewrite_module module is used tochange request URI using PCRE regular expressions,return redirects, and conditionally select configurations.-->将用户请求的URI基于PCRE regex所描述的模式进行检查,而后完成重定向替换

示例:

    http://www.magedu.com/hn--> http://www.magedu.com/henan

    http://www.magedu.com--> https://www.magedu.com/

1、rewrite regex replacement [flag]

    将用户请求的URI基于regex所描述的模式进行检查,匹配到时将其替换为replacement指定的新的URI注意:如果在同一级配置块中存在多个rewrite规则,那么会自下而下逐个检查;被某条件规则替换完成后,会重新一轮的替换检查隐含有循环机制,但不超过10次;如果超过,提示500响应码,[flag]所表示的标志位用于控制此循环机制如果replacement是以http://或https://开头,则替换结果会直接以重向返回给客户端301:永久重定向

    [flag]:

        last:重写完成后停止对当前URI在当前location中后续的其它重写操作,而后对新的URI启动新一轮重写检查;提前重启新一轮循环,不建议在lation中使用

        break:重写完成后停止对当前URI在当前location中后续的其它重写操作,而后直接跳转至重写规则配置块之后的其它配置;结束循环,建议在location中使用

        redirect:临时重定向,重写完成后以临时重定向方式直接返回重写后生成的新URI给客户端,由客户端重新发起请求;不能以http://或https://开头,使用相对路径,状态码:302

        permanent:重写完成后以永久重定向方式直接返回重写后生成的新URI给客户端,由客户端重新发起请求,状态码:301

2、return 停止处理,并返回给客户端指定的响应码

    return code [text];

    return code URL;

    return URL;

3、rewrite_log on | off;

    是否开启重写日志, 发送至error_log(notice level)

4、set $variable value;用户自定义变量

注意:变量定义和调用都要以$开头

5、if (condition) { ... }('{}'必须加上)

引入新的上下文,条件满足时,执行配置块中的配置指令;server, location

condition:

    比较操作符:

        == 相同

        != 不同

        ~:模式匹配,区分字符大小写

        ~*:模式匹配,不区分字符大小写

        !~:模式不匹配,区分字符大小写

        !~*:模式不匹配,不区分字符大小写

    文件及目录存在性判断:

        -e, !-e 存在(包括文件,目录,软链接)

        -f, !-f 文件

        -d, !-d 目录

        -x, !-x 执行