我们使用 Apache 2.4 将请求代理到我们的后端服务。为了做到这一点,我们使用一些 LocationMatch 指令将请求交给正确的服务。我们的两个 LocationMatch 指令如下所示:
<LocationMatch "^/api/backend$">
// Proxy request to http://backend-service
</LocationMatch>
<LocationMatch "^/api/(.*)$">
// Proxy request to http://api-service
</LocationMatch>
如果您访问例如 http://localhost/api/some/api/stuff 第二条规则适用(这是正确的)
如果您访问 http://localhost/api/backend 第二条规则也适用(我认为这是不对的)
我不明白为什么它总是使用第二个 LocationMatch 虽然 http://localhost/api/backend 应该是第一个正则表达式的直接匹配。Apache 评估他的 LocationMatch 正则表达式是否有任何规则或特定顺序?我可以将 /(.*) 正则表达式视为始终优先于类似表达式的全部表达式吗?