![ProxyPassMatch 在 Apache 中给出 404 未找到](https://linux22.com/image/690908/ProxyPassMatch%20%E5%9C%A8%20Apache%20%E4%B8%AD%E7%BB%99%E5%87%BA%20404%20%E6%9C%AA%E6%89%BE%E5%88%B0.png)
我有一个虚拟主机配置文件如下:
<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 可能不需要。这取决于您的应用程序。