nginx基础知识之rewrite正则表达式
rewrite ^/b/(.*)\.html /play.php?video=$1 break;
其中^匹配输入字符串的开始位置
.匹配除去\n之外的任何单个字符,*匹配前面字符的零次或者多次。
(.*)\.html 代表匹配所有的html网页。
$1取的是前面规则(.*)中匹配的字符串。
break是flag标记,本条规则匹配完成即终止,不再继续匹配后面的任何规则。
----我是华丽的分隔线-------
if(!-f $request_filename)
{
rewrite ^/img/(.*)$ /site/$host/images/$1 last;
}
!-f $request_filename 如果当前请求的资源文件路径不存在,那么执行rewrite重定向语句。
在nginx rewrite中,如果使用小括号(),那么在小括号之间的内容,可以在后面通过$1去引用。
rewrite ^/img/(.*)$ 就是把/img/以后的所有部分,当做了一组。$1就是重写的目标路径,这里用$1引用了前面正则表达式匹配的分组,即/img/后面的所有。这样的新路径就是除去/img/以外的所有,就达到了去除/img/前缀的目的。
last在重写路径结束以后,将得到了的路径重新进行一次路径匹配。
----我是华丽的分隔线----
break:遇到break就跳出,后面的语句不再执行。break的作用是完成当前的规则集,不再处理rewrite指令。
----我是华丽的分隔线----
if ($slow) {
limit_rate 10k;
break;
}
limit_rate限制向客户端传输响应的速率,用每秒字节数指定rate速率,0值禁用速率限制。
当重定向rewrite规则中有break时,不再执行break以下的rewrite规则。
但是当配置文件中有location 时,它还会去执行location{}段的配置,请求要去匹配这个location。
---我是华丽的分隔线-------
if( $http_user_agent ~ MSIE) {
rewrite ^(.*)$ /msie/$1 break;
}
如果“UA”包含MSIE,那么rewrite请求到/msie/目录下。
当请求中的User-Agent中包含MSIE时(~表示区分大小写)时,rewrite请求到/msie/$1 目录下,$1表示匹配到的URI。
如果客户端的浏览器为微软Microsoft IE浏览器,则rewrite请求到/msie/目录下。设置用户在使用IE浏览器的时候,去rewrite重定向到/msie/的目录下。
---我是华丽的分割线。
鼓励的话语:人要互相尊重,你敬我一尺,我还你一丈。小事情,却是大道理!