1

我有一个 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”设置为“。” 但我也不知道该怎么做。

任何想法 ?

[编辑] 事实上,将“base”设置为“.” 不起作用。第一个页面“/foo/controller/action”将生成链接为“./controller/nextaction”,浏览器将其翻译为“/foo/controller/controller/action”=> 404。我想这就是他们的原因重新使用绝对路径:它们不是路径。

4

2 回答 2

1

我从来没有能够使这种场景工作,所以我总是保持代理和未代理的上下文路径相同,即我会将应用程序放在http://host.foo.loc:8080/apps/foo. 通过命名 WAR 文件,您可以在 Tomcat 中拥有像这样的多级上下文路径apps#foo.war

于 2012-08-01T15:33:40.197 回答
0

添加grails.app.context = "/foo/bar"到您的Config.groovy.

于 2012-08-01T15:39:25.830 回答