当前位置: 首页>前端>正文

nginx井号怎么转译 nginx 转义字符

*  ^ : 匹配字符串的开始位置
*  $ : 匹配字符串的结束位置
*  .*  :       .匹配任意字符,  *匹配数量0到正无穷;
*  \.   ---》斜杠用来转义 \.代表匹配一个。
* (值1|值2|值3|值4):或匹配模式,例:(jpg|gif|png|bmp)匹配jpg或gif或png或bmp



匹配的优先级 :   =(精确匹配)    ^~(开头匹配)  ~(正则匹配)
* = 表示精确匹配
* ^~ 表示uri以某个常规字符串开头,大多情况下用来匹配url路径,nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。
* ~ 正则匹配(区分大小写)
* ~* 正则匹配(不区分大小写)
* !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则
* / 任何请求都会匹配

匹配时 :有关是否区分大小写匹配

~ -->代表区分大小写匹配
~* -->代表不区分大小写匹配

文件及目录的匹配

* -f和!-f用来判断是否存在文件
* -d和!-d用来判断是否存在目录
* -e和!-e用来判断是否存在文件或目录
* -x和!-x用来判断文件是否可执行

rewrite:

rewrite指令的最后一项参数为flag标记,flag标记有:
1.last    相当于apache里面的[L]标记,表示rewrite。
2.break本条规则匹配完成后,终止匹配,不再匹配后面的规则。
3.redirect  返回302临时重定向,浏览器地址会显示跳转后的URL地址。
4.permanent  返回301永久重定向,浏览器地址会显示跳转后的URL地址。

return 指令:

语法:return  code ;
使用环境:server,location,if;
该指令用于结束规则的执行并返回状态码给客户端。

示例:如果访问的URL以".sh"或".bash"结尾,则返回403状态码
location ~ .*\.(sh|bash)?$
{
return 403;
}
禁止访问以/data开头的文件
location ~ ^/data
{
deny all;
}

正则表达式的前后看匹配

要理解?=和?!,首先需要理解前瞻,后顾,负前瞻,负后顾四个概念:

// 前瞻:
exp1(?=exp2) 查找exp2前面的exp1
// 后顾:
(?<=exp2)exp1 查找exp2后面的exp1
// 负前瞻:
exp1(?!exp2) 查找后面不是exp2的exp1
// 负后顾:
(?<!exp2)exp1 查找前面不是exp2的exp1
举例:
"中国人".replace(/(?<=中国)人/, "rr") // 匹配中国人中的人,将其替换为rr,结果为 中国rr
"法国人".replace(/(?<=中国)人/, "rr") // 结果为 法国人,因为人前面不是中国,所以无法匹配到
要理解?:则需要理解捕获分组和非捕获分组的概念:
()表示捕获分组,()会把每个分组里的匹配的值保存起来,使用$n(n是一个数字,表示第n个捕获组的内容)
(?:)表示非捕获分组,和捕获分组唯一的区别在于,非捕获分组匹配的值不会保存起来

rewrite 后结尾 为last 和 break的区别

rewrite ^/aaa/(.*) /bbb/$1 last;

  • last: 将url进行重写后会在此进入这个server,重新进行匹配;

rewrite ^/aaa/(.*) /bbb/$1 break;

  • break: 不会再次进入这个server,而是直接按照重写的这个url进行匹配;



https://www.xamrdz.com/web/22u1928877.html

相关文章: