4

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

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将我带到“其他服务器”而不是预期的“服务器”

通过强制执行更多“正则表达式-y”行为并使用以表达式开头(又名:

<Location ~ "^/a">
 ProxyPass to Server....
</Location>

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

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

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

4

1 回答 1

5

如果您参考Apache docs,它清楚地指出

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

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

将匹配包含子字符串 /extra/data 或 /special/data 的 URL。

于 2013-02-06T16:36:51.827 回答