Apache LocationMatch的正则expression式行为似乎不正确

我使用LocationMatch指令在匹配某些URL模式时设置标题:

 # 1 # Expected matches: //mysite.com/any-page-with-at-least-a-character-and-no-dot <LocationMatch "^/[^\.]+$"> Header set X-Intelligence "STUPID" </LocationMatch> # 2 # Expected matches: //mysite.com/ , //mysite.com/main , //mysite.com/about <LocationMatch "^/(|main|about)$"> Header set X-Intelligence "CLEVER" </LocationMatch> 

然而,URL //mysite.com/匹配#1而不是#2。 这是一个错误还是我做错了什么?

我甚至尝试在#2中使用正则expression式"^/(main|about)?$" ,但仍然没有爱。

可以通过使用这个configuration来解决它:

 <VirtualHost 127.0.0.1:80> ServerName localhost <Location "/"> Header set X-Intelligence "CLEVER" </Location> <LocationMatch "^/[^\.]+$"> Header set X-Intelligence "STUPID" </LocationMatch> <LocationMatch "^/(main|about)$"> Header set X-Intelligence "CLEVER" </LocationMatch> </VirtualHost> 

这样,以下请求按预期工作:

 # curl -I -L http://127.0.0.1/ 2> /dev/null | grep XI X-Intelligence: CLEVER # curl -I -L http://127.0.0.1/foo 2> /dev/null | grep XI X-Intelligence: STUPID # curl -I -L http://127.0.0.1/about 2> /dev/null | grep XI X-Intelligence: CLEVER