我有一个应用程序在这样的 URL 上运行:
我不想要/myapp
URL 中的部分。那么我怎样才能摆脱应用程序名称呢?我只想
成为 URL。我怎样才能做到这一点?
我有一个应用程序在这样的 URL 上运行:
我不想要/myapp
URL 中的部分。那么我怎样才能摆脱应用程序名称呢?我只想
成为 URL。我怎样才能做到这一点?
有点详细的方法
第一种方法:
首先关闭你的 tomcat [从 bin 目录 (
sh shutdown.sh
)] 然后你必须删除你的 tomcat webapps 文件夹 (rm -fr *
) 的所有内容,然后重命名你的 WAR 文件以ROOT.war
最终启动你的 tomcat [从 bin 目录 (sh startup.sh
)]
第二种方法:
将您的战争文件保留在
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 属性。不应设置 path 元素 - 在本例中,它源自 .xml 文件的名称ROOT.xml
。有关详细信息,请参阅上面的上下文容器。
1)您的应用服务器需要配置为将您的 grails 应用程序作为 ROOT 应用程序
2)你的grails应用上下文路径应该是“/”或者app.context=/
您可以通过简单的命名使 Tomcat 将 webapp 用作根上下文ROOT.war
,即获取myapp-0.1.war
Grails 生成的并将其复制到TOMCAT_DIR/webapps/ROOT.war
.
如果您有一个设置,grails.serverURL
您Config.groovy
将需要为您的生产环境覆盖它,以确保 Grails 生成的任何绝对链接都是正确的
environments {
production {
grails.serverURL = 'http://myapp.mydomain.com'
}
}
grails.serverURL
但在 Grails 2 中,完全省略并让应用程序在运行时推断出正确的值通常是安全的。仅当您在未通过正确Host
标头的反向代理后面运行时才需要它。