我正在为我的应用程序使用 Tomcat 服务器,它可以通过 ajp 从 Apache HTTP 访问。
Tomcat服务器上的各个app生成的url,需要通过//control/访问
这看起来像下面的概述:
- //www.example.com/app1/control/index
- //www.example.com/app2/control/index
- //www.example.com/app3/control/index
- //www.example.com/app3/control/otherurl
- .
- //www.example.com/appN/control/index.jsp
虽然这对我来说是可以接受的,但它对用户来说不是很友好,我想通过提供更短的 url 来改进它。正如我所见,/control 或 control/是多余的,因为它会更加用户友好:
- //www.example.com/app1/index
- //www.example.com/app2/index
- //www.example.com/app2/otherurl
- .
- .
- //www.example.com/appN/index
现在,我可以为每个应用执行 proxypass/proxyreversepass,但这是一个繁琐的过程。所以我想通过应用正则表达式来解决它。但我对如何进行 url 重写和 proxypass/proxyreversepass 以使其正常工作感到有些困惑。
你能帮我找到正确的解决方案吗?
最好的问候,
皮埃尔·斯密茨
最佳答案
您要找的是ProxyPassMatch
.像这样:
ProxyPassMatch ^/app([0-9]+)/(.*)$ ajp://tomcathost:port/app$1/control/$1
我不完全确定如何处理 ProxyPassReverse
,因为没有 ProxyPassReverseMatch
。您可能不得不偷懒地使用您的 ProxyPassReverse
:
ProxyPassReverse /app ajp://tomcathost:port/app
我不知道以上是否可行。我所知道的是 mod_proxy
不会重写任何页面内容,所以如果您发现页面中的 URL 格式不正确,mod_proxy
帮不了你。相反,您需要查看 mod_proxy_html
,它不是 Apache httpd 的一部分(直到 httpd 2.4)。
关于regex - Apache http + mod-rewrite 到 Tomcat 以从 url 丢失应用程序子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28076377/