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;
}