【问题标题】:Apache http + mod-rewrite to Tomcat to lose apps subfolder from the urlApache http + mod-rewrite 到 Tomcat 以从 url 丢失应用程序子文件夹
【发布时间】:2015-01-30 00:19:37
【问题描述】:

我正在为我的应用程序使用 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

虽然这对我来说是可以接受的,但它对用户不是很友好,我想通过提供更短的网址来改进它。在我看来 /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 使其工作感到有些困惑。

您能帮我找到正确的解决方案吗?

最好的问候,

皮埃尔·斯密茨

【问题讨论】:

  • Apache httpd 版本?
  • 即Apache httpd 2.2.22
  • 所有应用程序都将通过同一个后端 AJP URL 访问吗?
  • @christopher-schultz 是的。

标签: regex http tomcat mod-rewrite proxypass


【解决方案1】:

您正在寻找的是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)。

【讨论】:

  • 谢谢。我会试试那个选项。
猜你喜欢
  • 1970-01-01
  • 2010-11-21
  • 1970-01-01
  • 1970-01-01
  • 2014-06-04
  • 1970-01-01
  • 2015-09-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多