rewrite 指令的基本语法:
rewrite regex replacement [flag];
参数 regex 表示正 则 表达式,参数 replacement 表示符合正 则 规 则 的替换算法,可选参数 flag用于指定进一步处理的标识
参数值 | 说明 |
last |
终止 rewrite,继续匹配其他规则 |
break |
终止 rewrite,不再继续匹配 |
redirect |
临时重定向,返回的 HTTP 状态码为 302 |
permanent |
永久重定向,返回的 HTTP 状态码为 301 |
当 flag 的值为 last 或 break 时,表示当前的设置为重写。
当 flag 的值为 redirect 或 permanent 时表示重定向。
判断符号 | 说明 |
= |
判断变量与内容相等 |
!= |
判断变盘与内容不等 |
~ |
区分大小写正则匹配 |
~* |
不区分大小写正则匹配 |
!~ |
区分大小写正则不匹配 |
!~* |
不区分大小写正则不匹配 |
-f |
判断文件存在 |
!-f |
判断文件不存在 |
-d |
判断目录存在 |
!-d |
判断目录不存在 |
-e |
判断文件或目录存在 |
!-e |
判断文件或目 录不存在 |
-x |
判断可执行文件 |
!-x |
判断不可执行文件 |
server {
set $name $1; #利用 set指令为变量 $name赋值, $1 表示符合正则表达式第一个子模式的值
# 模式(〔0-9]+)匹配到的值可以是 2、45 等由一个或多个数字组成的字符串
rewrite ^/img-([0-9]+).jpg$ /img/$name.jpg permanent;
}