用于重写静态URL的Grails URL映射

用于重写静态URL的Grails URL映射,grails,Grails,我正在尝试在UrlMappings中执行类似的操作,以便为静态HTML重新编写和缩短URL: mappings = { "/page/$pageId" { uri = { "/foo/bar/pages/${pageId}.html" } } ... } 目标是将类似/page/xyz的URL发送到/foo/bar/pages/xyz.html 我还无法使上述语法起作用——Grails似乎不喜欢将闭包作为URI的值 我也试过了,但没有结束

我正在尝试在
UrlMappings
中执行类似的操作,以便为静态HTML重新编写和缩短URL:

mappings = {
   "/page/$pageId" {
      uri = {
       "/foo/bar/pages/${pageId}.html"
      }
   }
   ...
}
目标是将类似
/page/xyz
的URL发送到
/foo/bar/pages/xyz.html

我还无法使上述语法起作用——Grails似乎不喜欢将闭包作为URI的值

我也试过了,但没有结束

"/page/$pageId"(uri: "/foo/bar/pages/${pageId}.html") 
找不到404:/foo/bar/pages/(*).html


我使用的是Grails2.2.2。

在映射到特定URI时,不使用闭包。如图所示:

将一个URI重写到另一个显式URI(而不是 控制器/动作对)执行以下操作:

因此,在你的情况下:

"/page/$pageId"(uri: "/foo/bar/pages/${pageId}.html")

如果您在views目录中将xyz.html重新标记为xyz.gsp,那么您可以进行单独的映射“/page/xyz”(视图:'xyz'),结果是404-请参阅abobve
"/page/$pageId"(uri: "/foo/bar/pages/${pageId}.html")