LocationMatch正则表达式行为

时间:2017-04-11 18:56:41

标签: regex apache locationmatch

我试图在Apache中使用LocationMatch设置一堆基于URL的规则,并且正则表达式似乎以我不理解的方式运行。
我试着查看文档,但是我不清楚WRT我的问题......也不是围绕互联网的其他问题/答案。

这是我的Location指令和我的LocationMatch指令结构的一般示例:

<Location />
    Header set X-Intelligence "CatchAll"
</Location>

<LocationMatch "\.(pdf)$">
    Header set X-Intelligence "pdf1"
</LocationMatch>
  • 这些指令都在ssl的虚拟主机内。
  • 我没有在配置中的任何其他地方使用任何其他Location或LocationMatch指令。
  • LocationMatch指令都来自我的CatchAll Location指令。
  • 当我仅使用<Location />指令时,一切正常。

我注意到这里使用的正则表达式与我使用的正则表达式之间存在一些差异..

  • 使用开始/结束斜杠似乎无法正常工作。
  • 使用/ i / g之类的结束修饰符不起作用。
  • 下面给出的其他行为差异

我尝试了很多不同的东西,但这里有一些我的结果的例子:

1

<LocationMatch "(?i)\.(pdf)$">
    Header set X-Intelligence "pdf1"
</LocationMatch>
  • 上述内容似乎与所有.pdf和.PDF扩展程序网址相匹配。

然而:

<LocationMatch "\.(pdf)$">
    Header set X-Intelligence "pdf1"
</LocationMatch>
  • 与任何.pdf扩展程序网址不匹配。
  • .pdf不会被CatchAll捕获(显示404未找到)。
  • .PDF(首都)确实被CatchAll抓住了。


2。不相似:

<LocationMatch "\.(docx?)$">
    Header set X-Intelligence "doc2"
</LocationMatch>
  • 以上内容与我的.docx网址相匹配。

然而:

<LocationMatch "\.(doc)$">
    Header set X-Intelligence "doc2"
</LocationMatch>

<LocationMatch "\.(docx)$">
    Header set X-Intelligence "doc22"
</LocationMatch>
  • 上述内容与.docx网址不符。
  • 不会被CatchAll捕获(未找到404)。
  • 我尝试重新排列订单,但仍会给出相同的结果。

不确定发生了什么,但行为完全不符合我的预期 任何人对我可能做错了什么或我不理解的事情都有任何想法?

向所有建议开放,以便更好地解决这个问题。感谢。

0 个答案:

没有答案