n2n1 发表于 2022-3-9 20:01:20

Apache Rewrite .htaccess 正则表达式详细匹配规则伪静态解释大全

Apache Rewrite .htaccess 正则表达式详细匹配规则伪静态解释大全
伪静态复杂规则其实不难,这东西没人学,网上的资料很多都是没理解透彻错误在这里备注一下!正则表达式匹配规则
[*]# —— 位于行首时表示注释。
[*][] —— 匹配一个字符集合,例如可以匹配 x,y 或者z
[*][]+ —— 例如+会以任何顺序、次数匹配 x,y,z 的出现
[*][^] —— 字符^表示字符集的补集。[^xyz]将匹配没有 x,y 或者z的字符串
[*] —— 连字符(-)表示匹配从字母a到字母z的所有字符串
[*]a{n} —— 指定字母a出现的次数为n次,满足该条件时匹配。例如 x{3} 仅与xxx匹配
[*]a{n,} —— 指定字母a出现的次数至少为n次,例如 x{3,} 可以与xxx或者xxxx等匹配
[*]a{n,m} —— 指定a出现的次数至少为n到m次。
[*]() —— 用于将正则表达式分组,满足第一组正则表达式的字符串会被存储在变量$1中,以此类推。如果括号中的不是正则表达式,例如(perishable)?press 将能够匹配有或者没有perishable前缀的press
[*]^ —— 位于行首。注意:和中括号中的[^]意义不同。
[*]$ —— 位于行末
[*]? —— 例如 monzas? 会匹配 monza 或者 monzas,而 mon(za)? 会匹配 mon 或者 monza。又如 x? 会匹配 “空字符” 或者 一个x
[*]! —— 逻辑非。例如 “!string” 将会匹配除了 “string” 以外的所有字符串
[*]. —— 表示任意字符串
[*]– —— 命令Apache “不要” 重写URL,例如 “xxx.domain.com.* – ”
[*]+ —— 匹配至少一个任意字符,例如G+匹配以G开头、并且后面至少有一个字符的字符串
[*]* —— 匹配零个或多个字符,例如 “.*” 匹配任意字符串
[*]| —— 逻辑 “或” ,与不同的是,它只匹配字符串,例如(x|y)匹配x或者y
[*]\ —— 转义字符。可以转义左括号( 尖字符^ 美元符号$ 感叹号! 点. 星号* 管道符号| 右括号) 等
[*]\. —— 转义为点字符(点字符在正则表达式中可以匹配任意字符)
[*]/* —— 零个或多个正斜杠
[*].* —— 零个或多个任意字符(即,匹配任意字符串,包括空字符)
[*]^$ —— 匹配 “空字符” 、 “空行”
[*]^.*$ —— 匹配任意字符串(仅限一行)
[*][^/.] —— 匹配既非 “正斜杠” 也不是 “点” 的任意字符
[*][^/.]+ —— 匹配第一个字符既非 “正斜杠” 也不是 “点” ,后继字符可以是 “正斜杠” 或者 “点” 的字符串
[*]http:// —— 匹配 “http://”
[*]^domain.* —— 匹配以 “domain” 开始的字符串
[*]^domain\.com$ —— 仅匹配 “domain.com”
[*]-d —— 测试字符串是否是已存在的目录
[*]-f —— 测试字符串是否是已存在的文件
[*]-s —— 测试字符串所指文件是否有 “非零” 值


命令规则
[*] —— Forbidden(禁止): 命令服务器返回 403 Forbidden错误给用户浏览器
[*] —— Last rule(最后一条规则): 告诉服务器在本条规则执行完后停止重写URL
[*] —— Next(下一条规则): 告诉服务器继续重写,指导所有重写指令都执行过
[*] —— Gone(丢失): 命令服务器返回410 GONE(no longer exists)错误消息
[*] —— Proxy(代理): 告诉服务器通过mod_proxy模块处理用户请求
[*] —— Chain(捆绑): 告诉服务器将当前的规则和前面的规则进行捆绑
[*] —— Redirect(重定向): 命令服务器发出重定向消息,以便用户浏览器发出 rewritten/modified(重写/修改)URL的请求
[*] —— No Case(不区分大小写): 对客户端请求的URL不区分大小写
[*] —— Pass Through(放行): 让mod_rewrite模块将重写的URL传回给Apache做进一步处理
[*] —— Or(逻辑或): 用逻辑 “或” 将两个表达式连接在一起,如果结果为 “真” ,则会应用后继的相关规则
[*] —— No Escape(禁用转义): 命令服务器在输出时禁用转义字符
[*] —— No Subrequest(禁用子请求): 如果存在内部子请求,则跳过当前命令
[*] —— Append Query String(追加查询字符串): 命令服务器在URL末尾追加查询字符串
[*] —— Skip(跳过): 如果满足某指定的条件,则跳过后面第x调规则
[*] —— Environmental Variable(环境变量): 命令服务器将值value赋给变量variable
[*] —— Mime Type(MIME类型): 声明目标资源所属的MIME类型




[*]规则摸索

[*]+ —— 匹配至少一个任意字符,例如G+匹配以G开头、并且后面至少有一个字符的字符串 (这个解释是错误的这个是之匹配一个字符)
[*].+ ——这个是匹配至少一个任意字符不含空字符这个很好用;

页: [1]
查看完整版本: Apache Rewrite .htaccess 正则表达式详细匹配规则伪静态解释大全