我有一个Web应用程序,可以直接作为http://host.foo.loc:8080/foo/访问,也可以通过安全的反向代理http://www.company.com/apps/foo/
访问默认情况下,Grails将生成具有相对路径的相对URL,例如:
<g:form action="bar">
将产生:
<form action="/foo/bar" method="post" >
这在本地可以,但反向代理不接受http://www.company.com/foo/bar(它缺少/ apps /)
如果我这样做:
<g:form action="bar" base=".">
没关系。但我真的不想在每个生成链接的标签上指定它。
处理此问题的最佳方法是让Grails在其相对URL中生成相对路径。或者,我可以将全局“baseUrl”设置为“。”。但我也不知道该怎么做。
有什么想法吗?
[edit]实际上,将“base”设置为“。”不起作用。第一页“/ foo / controller / action”将生成链接为“./controller/nextaction”,浏览器将其翻译为“/ foo / controller / controller / action”=&gt; 404.我想这就是他们使用绝对路径的原因:它们不是路径。
答案 0 :(得分:0)
我从来没有能够使这种情况工作,所以我始终保持代理和未代理的上下文路径相同,即我将应用程序放在http://host.foo.loc:8080/apps/foo
。您可以通过命名WAR文件apps#foo.war
在Tomcat中拥有这样的多级上下文路径。
答案 1 :(得分:0)
将grails.app.context = "/foo/bar"
添加到您的Config.groovy
。