如何从Grails应用程序的URL中删除应用程序名称?

时间:2013-01-10 11:40:55

标签: url tomcat grails tomcat6 grails-2.0

我有一个运行在这样的URL的应用程序:

  

http://myapp.mydomain.com/myapp

我不希望网址中包含/myapp部分。那么如何摆脱应用程序名称呢?我只想

  

http://myapp.mydomain.com

是URL。我怎么能这样做?

3 个答案:

答案 0 :(得分:7)

比特详细的方法

第一种方法:

  

首先关闭你的tomcat [从bin目录(sh shutdown.sh)]然后你   必须删除tomcat webapps文件夹(rm -fr *)的所有内容   将您的WAR文件重命名为ROOT.war,最后启动您的tomcat   [来自bin目录(sh startup.sh)]

第二种方法:

  

将您的war文件保留在原始名称下的CATALINA_BASE/webapps中 - 关闭   server.xml文件中Host元素中的autoDeploy和deployOnStartup。   在server.xml中显式定义所有应用程序上下文,指定两个路径   和docBase。您必须这样做,因为您已禁用所有Tomcat   自动部署机制,Tomcat将不再部署您的应用程序   除非它在server.xml中找到它们的Context。

注意:

  

这最后一个方法也意味着为了对任何一个做出任何改变   应用程序,您将不得不停止并重新启动Tomcat。

第三种方法:

  

将你的战争文件放在CATALINA_BASE/webapps之外(它必须在外面   防止双重部署)。 - 将一个名为ROOT.xml的上下文文件放在
中   CATALINA_BASE/conf//。这个上下文文件中的单个元素必须有一个   docBase属性指向war文件的位置。路径元素   不应该设置 - 它是从.xml文件的名称派生的   情况1}}。有关详细信息,请参阅上面的上下文容器。

答案 1 :(得分:2)

1)您的应用服务器需要配置为将您的grails应用程序作为ROOT应用程序

2)您的grails应用程序上下文路径应为“/”或app.context = /

答案 2 :(得分:1)

您可以通过简单地命名为ROOT.war来使Tomcat作为根上下文服务,即使用Grails生成的myapp-0.1.war并将其复制到TOMCAT_DIR/webapps/ROOT.war

如果grails.serverURL中有Config.groovy的设置,则需要为生产环境覆盖此设置,以确保Grails生成的任何绝对链接都正确

environments {
  production {
    grails.serverURL = 'http://myapp.mydomain.com'
  }
}

但是在Grails 2中,通常可以安全地省略grails.serverURL并让应用程序在运行时推断出正确的值。如果您在没有通过正确的Host标头的反向代理后面运行,则只需要它。