8

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

http://myapp.mydomain.com/myapp

我不想要/myappURL 中的部分。那么我怎样才能摆脱应用程序名称呢?我只想

http://myapp.mydomain.com

成为 URL。我怎样才能做到这一点?

4

3 回答 3

7

有点详细的方法

第一种方法:

首先关闭你的 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。有关详细信息,请参阅上面的上下文容器。

于 2013-01-10T12:28:58.100 回答
3

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

2)你的grails应用上下文路径应该是“/”或者app.context=/

于 2013-01-10T11:44:56.943 回答
1

您可以通过简单的命名使 Tomcat 将 webapp 用作根上下文ROOT.war,即获取myapp-0.1.warGrails 生成的并将其复制到TOMCAT_DIR/webapps/ROOT.war.

如果您有一个设置,grails.serverURLConfig.groovy将需要为您的生产环境覆盖它,以确保 Grails 生成的任何绝对链接都是正确的

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

grails.serverURL但在 Grails 2 中,完全省略并让应用程序在运行时推断出正确的值通常是安全的。仅当您在未通过正确Host标头的反向代理后面运行时才需要它。

于 2013-01-10T12:14:43.560 回答