我正在尝试将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和image。
更新 我在application.properties中设置了以下内容:
app.context=/
serverURL=http://example.com/
并在grails中创建了绝对URL:
<g:createLink controller="Sample" absolute="true"/>
并创建正确的URL!但是资源使用相对路径并从AppName / ...开始。这似乎是一个诅咒,我只是无法摆脱该AppName。
更新
如果我运行prod run-app
,那么所有网址都会正确显示,但是当我部署到Tomcat 7时,AppName会再次显示在URL中。
答案 0 :(得分:0)
还有其他选择,但最简单的方法可能是像ROOT.war一样部署它。
只需更改 BuildConfig.groovy 中的默认war文件名:
grails.project.war.file = "target/ROOT.war"
为您设置正确的 grails.serverURL 属性,您已完成。
希望它有所帮助。
答案 1 :(得分:-2)
这是您继承的应用程序吗?如果是这样,我建议咨询原始创建者,看看他是如何为您的架构配置的。