ProxyPassMatch 在 Apache 中给出 404 未找到

ProxyPassMatch 在 Apache 中给出 404 未找到

我有一个虚拟主机配置文件如下:

<VirtualHost  *:8086>
        ProxyRequests off
        ServerName  localhost
        ProxyPassMatch ^/App/rest/performancetest/executetest/(.*)/(.*)$  http://somedomain.com/$5/$6
</VirtualHost>

当我点击 URL 时,this_server_ip:8086/App/rest/performancetest/executetest/x/y我得到 404 Not found。但只是为了测试目的,如果我使用

ProxyPass /App/rest/performancetest/executetest/x/y http://somedomain.com/x/y而不是在配置中使用 ProxyPassMatch,我在浏览器上获得了我期望的页面。现在我使用 ProxyPassMatch 的方式有什么问题?我真的想匹配 URL 的最后两部分。所以使用 ProxyPassMatch 对我来说是必须的。我在 Redhat 服务器上使用 apache 2.2.3。

答案1

您需要重新阅读 ProxyPassMatch 文档。您当前的指令映射/App/rest/performancetest/executetest/<something>/<somethingelse>到,http://somedomain.com而您想要将其映射到http://somedomain.com/something/somethingelse/

我不太清楚您为什么使用 ProxyPassMatch,下面的方法对您不起作用吗?

ProxyPass /App/rest/performancetest/executetest/ http://somedomain.com/
ProxyPassReverse /App/rest/performancetest/executetest/ http://somedomain.com/

注意:始终匹配尾部斜杠。

评论后编辑。如果您想使用 URL 的最后部分,那么您需要使用它们 :-)

ProxyPassMatch /App/rest/performancetest/executetest/([^/]+)/([^/]+)/ http://somedomain.com/$1/$2/
ProxyPassReverse /App/rest/performancetest/executetest/ http://somedomain.com/

ProxyPassReverse 可能不需要。这取决于您的应用程序。

相关内容