我有一个运行在这样的URL的应用程序:
我不希望网址中包含/myapp
部分。那么如何摆脱应用程序名称呢?我只想
是URL。我怎么能这样做?
答案 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
标头的反向代理后面运行,则只需要它。