2014-08-30 81 views
0

我已经能够以我在互联网上进行一些研究(复制粘贴)后发现的方式将我的应用程序映射到域。在proxypassreverse设置中从url中删除应用程序名称

<VirtualHost *:80> 
    ServerName example.com 
    ProxyPass  /MyApp http://localhost:8080/MyApp 
    ProxyPassReverse /MyApp http://localhost:8080/MyApp 
    ProxyPassReverseCookieDomain localhost example.com 
    ProxyPreserveHost On 


RewriteEngine on 

    RewriteRule ^/$ http://example.com/MyApp 
</VirtualHost> 

重写工作正常,每当我打开example.com它重定向到example.com/MyApp。我的问题是,如何在不重定向的情况下,如何让它不重定向并在example.com/上传递MyApp。只需简单地将MyApp映射到域的根即可。重写工作正常,但当然不希望在URL中的应用程序名称。

+0

使用的[重写规则]代理标志('[P]')(http://httpd.apache.org/docs/2.2/mod/mod_rewrite。 html#rewriterule)应该这样做:'RewriteRule ^/$ http://example.com/MyApp [P]' – iamnotmaynard 2014-08-30 20:33:56

+0

如果你有对docroot的控制,它可能也会将它设置为'/ MyApp' – iamnotmaynard 2014-08-30 20:35:25

+0

我在控制我的服务器。你能否请你发布与docroot有关的答案,以便我可以试一试。我试过[p]标志但不起作用。 – akshayb 2014-08-30 20:40:49

回答

0

将您的war文件重命名为ROOT.war,使其成为Tomcat中的根webapp。然后相应地调整路径在Apache的配置:

ProxyPass  /http://localhost:8080/ 
ProxyPassReverse/http://localhost:8080/ 
+0

但它会在有多个应用程序时工作吗? – akshayb 2014-08-31 06:43:10

+0

是的,这基本上将所有请求代理到Tomcat。当然,你只能拥有一个root webapp,但你可以使用上下文名称。 – 2014-08-31 13:09:22

相关问题