regex - Apache http + mod-rewrite 到 Tomcat 以从 url 丢失应用程序子文件夹

标签 regex http tomcat mod-rewrite proxypass

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

相关文章:

c# - 使用 .NET 正则表达式匹配前面没有单词的特定字符串和任意数量的空格

javascript - 如何修改此主题标签正则表达式以检查第二个字符是 a-z 还是 A-Z?

java - 如何使用java中的正则表达式模式从字符串中提取链接?

tomcat - tomcat 7.0中配置tomcat支持ssl的问题

java - JPA Hibernate DBCP Tomcat 内存不足

Amazon Redshift 中匹配序列数字的正则表达式

apache - 从 https 重写为 http

c# - 多部分/表单数据请求——上传 pdf 导致生成空白文件

asp.net - 在 ASP.net 中返回纯文本或其他任意文件

java - 通过 servlet 访问 GWT POST 参数?