【发布时间】:2014-07-06 20:36:02
【问题描述】:
我正在尝试将 Grails 2.2.3 项目部署到生产环境中并且遇到 URL 问题。
我在 Apache 中设置了反向代理,并以 http://example.com 为例。
我在Config.groovy中设置了以下属性:
grails.serverURL = "http://example.com/"
并在application.properties下面设置:
app.context=/
但是我所有的资源和链接总是引用
http://example.com/AppName/...
如何从资源和链接引用中删除应用程序名称(“AppName”)?
资源示例:
<r:require modules="bootstrap"/>
<g:javascript library="jquery"/>
环境 Config.groovy 示例:
environments {
development {
grails.logging.jul.usebridge = true
}
production {
grails.logging.jul.usebridge = false
grails.serverURL = "http://example.com/"
grails.app.context = "/"
}
}
我认为 Grails 应用程序必须具有某种可以设置的属性!?不然好像脖子疼。
请帮忙!
P.S:如果我直接访问任何资源(从 URL 中手动删除 AppName),我会得到正确的东西,例如 css、js 和图像。
更新: 我在 application.properties 中设置了以下内容:
app.context=/
serverURL=http://example.com/
并在 grails 中创建了绝对 URL:
<g:createLink controller="Sample" absolute="true"/>
它会创建正确的 URL!!!但是资源使用相对路径并以 AppName/ 开头...这似乎是一个诅咒,我就是无法摆脱那个 AppName。
更新:
如果我运行prod run-app,那么所有 URL 都会正确显示,但是当我部署到 Tomcat 7 时,AppName 会再次出现在 URL 中。
【问题讨论】:
-
应该是
grails.app.context='/'。参考stackoverflow.com/questions/22539389/… -
如何生成链接?
-
您是否为 prod 环境在
Config.groovy中设置了grails.serverURL属性? -
向问题添加信息
标签: grails tomcat7 reverse-proxy grails-2.2