Apache http + mod-重写到Tomcat以丢失来自url的apps子文件夹

时间:2015-01-21 20:38:02

标签: regex http tomcat mod-rewrite proxypass

我正在为我的应用程序使用Tomcat服务器,可以通过ajp从Apache HTTP访问。

Tomcat服务器上各种应用程序生成的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

虽然这对我来说是可以接受的,但它不是非常用户友好,我想通过提供更短的网址来改善这一点。我认为/ 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以使其工作有点困惑。

你能帮助我,找到正确的解决方案吗?

致以最诚挚的问候,

Pierre Smits

1 个答案:

答案 0 :(得分:0)

您要找的是ProxyPassMatch。像这样:

ProxyPassMatch ^/app([0-9]+)/(.*)$ ajp://tomcathost:port/app$1/control/$1

我不完全确定如何处理ProxyPassReverse,因为没有ProxyPassReverseMatch。你可能不得不对你的ProxyPassReverse

感到懒惰
ProxyPassReverse /app ajp://tomcathost:port/app

我不知道上述内容是否有效。我所知道的是mod_proxy不会重写任何页面内容,因此如果您发现您的网址在页面中格式不正确,mod_proxy可以'帮你。相反,你需要检查mod_proxy_html这不是Apache httpd的一部分(直到httpd 2.4)。