分享免费的编程资源和教程

网站首页 > 技术教程 正文

nginx基础知识之rewrite正则表达式

goqiw 2025-05-15 17:51:16 技术教程 1 ℃ 0 评论

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/的目录下。

---我是华丽的分割线。

鼓励的话语:人要互相尊重,你敬我一尺,我还你一丈。小事情,却是大道理!

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表