Apache2(HTTPD)位置标记是否与通配符匹配?

时间:2012-06-04 22:47:15

标签: apache2 apache

好消息是我已经解决了我的问题,坏消息是我不明白这个问题!

URL: http://host:port/a/b

的httpd.conf

<Location /a>
 ProxyPass to Server....
</Location>

<Location /b>
 ProxyPass to some other Server
</Location>

在此设置中,我对http://.../a/b的请求将我带到“其他服务器”而不是预期的“服务器”

我能够通过强制更多“正则表达式”行为,并使用带表达式的开头(又名:

)来获得我预期的行为
<Location ~ "^/a">
 ProxyPass to Server....
</Location>

如果我必须这样做,那很好。但是在这种情况下,文档似乎并不清楚。

文档来源: 位置标记http://httpd.apache.org/docs/2.0/mod/core.html#location上的Httpd文档似乎暗示以非正则表达式方式匹配的位置(也称为no~)不使用通配符(这就是为什么他们有一节解释如何使用通配符和正则表达式)。此外,最后的斜线讨论并不意味着它也使用通配符。

所以,我只能假设我在我的Apache版本中发现了一些错误。或者我可能只是使用过于相似的URL结构而无法理解Apache文档。帮助我,StackOverflow!

1 个答案:

答案 0 :(得分:3)

如果您参考Apache docs,则会明确说明

  

也可以使用正则表达式,并添加〜   字符。例如:

     

<Location ~ "/(extra|special)/data">

     

会匹配包含的网址   substring / extra / data或/ special / data。