【问题标题】:How can I remove the application name from a Grails application’s URL?如何从 Grails 应用程序的 URL 中删除应用程序名称?
【发布时间】:2012-12-24 19:02:51
【问题描述】:

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

http://myapp.mydomain.com/myapp

我不希望 URL 中包含 /myapp 部分。那么我怎样才能摆脱应用程序名称呢?我只想

http://myapp.mydomain.com

成为 URL。我该怎么做?

【问题讨论】:

    标签: url tomcat grails tomcat6 grails-2.0


    【解决方案1】:

    位详细方法

    第一种方法:

    首先关闭你的 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 中显式定义所有应用程序上下文,同时指定两个路径 和文档库。您必须这样做,因为您已禁用所有 Tomcat 自动部署机制,Tomcat 将不再部署您的应用程序 除非它在 ​​server.xml 中找到它们的 Context。

    注意:

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

    第三种方法:

    将你的war文件放在CATALINA_BASE/webapps之外(它必须在外面 以防止双重部署)。 - 在
    CATALINA_BASE/conf// 中放置一个名为ROOT.xml 的上下文文件。此上下文文件中的单个元素必须具有 docBase 属性指向你的war 文件的位置。路径元素 不应设置 - 它源自 .xml 文件的名称,在此 案例ROOT.xml。有关详细信息,请参阅上面的上下文容器。

    【讨论】:

    • 方法 3:ROOT.xml 需要进入CATALINA_BASE/conf/Catalina/localhost(技术上它是conf/<Engine name>/<Host name>,但Catalinalocalhost 是开箱即用的默认值@ 987654336@) 不直接在conf
    • 我尝试了第一种方法,大多数时候“myapp.mydomain.com”给我错误的请求错误,如果我通过 IP 访问应用程序,它工作正常。有什么解决方案。我正在使用 tomcat 6。
    【解决方案2】:

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

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

    【讨论】:

    • 你的环境是什么?
    • 我的环境是生产环境,它不工作,我使用“grails prod war”创建了war文件。
    • 如何做第一个“应用服务器需要配置为让你的grails应用程序作为ROOT应用程序”。我已经完成了第二个
    • 具体来说,您将应用部署到哪个应用服务器?还是像 GAE 一样云部署??
    • 其tomcat6服务器部署在云端
    【解决方案3】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-09-26
      • 2011-08-24
      • 1970-01-01
      • 2012-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-12
      相关资源
      最近更新 更多