• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • <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>部分的工作方式,以解释接收请求时如何组合这些不同的部分