<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>部分的工作方式,以解释接收请求时如何组合这些不同的部分
