<LocationMatc> 指令
描述: | 仅将随附的指令应用于正则表达式匹配的URL |
---|---|
句法: | <LocationMatch regex>...</LocationMatch> |
内容: | 服务器配置,虚拟主机 |
状态: | 核心 |
模组: | 核心 |
的<LocationMatch>
指令限制了由URL所附指示的范围内,以相同的方式来<Location>
。但是,它使用正则表达式作为参数而不是简单的字符串。例如:
<LocationMatch "/(extra|special)/data"> # ... </LocationMatch>
将匹配包含子字符串/extra/data
或的URL /special/data
。
如果目的是使URL 以开头/extra/data
,而不是仅包含/extra/data
,则在正则表达式前加上,^
以要求此。
<LocationMatch "^/(extra|special)/data">
从2.4.8开始,将捕获命名的组和反向引用,并将其以大写的前缀“ MATCH_”的相应名称写入环境。这样可以从表达式和模块(如)中引用URL的元素mod_rewrite
。为了避免混淆,已编号(未命名)的反向引用将被忽略。请改用命名组。
<LocationMatch "^/combined/(?<sitename>[^/]+)"> Require ldap-group cn=%{env:MATCH_SITENAME},ou=combined,o=Example </LocationMatch>
关于/(斜线)的注释
斜杠字符有特殊的含义,具体取决于它在URL中出现的位置。人们可能习惯于文件系统中多个相邻斜杠经常折叠为单个斜杠(即,/home///foo
与相同/home/foo
)的行为。在URL空间中,这不一定是正确的。该<LocationMatch>
指令和正则表达式版本<Location>
要求你明确指定多个斜线,如果这是你的意图。
例如,<LocationMatch "^/abc">
将匹配请求URL /abc
而不匹配请求URL //abc
。<Location>
当用于代理请求时,(非正则表达式)指令的行为类似。但是,当(非正则表达式)<Location>
用于非代理请求时,它将隐式地将多个斜杠与单个斜杠匹配。例如,如果您指定<Location "/abc/def">
且请求为,/abc//def
则它将匹配。
参见
- <Directory>,<Location>和<Files>部分的工作方式,以解释接收请求时如何组合这些不同的部分