我正在与Grails 2.1.1
并希望添加一些映射到控制器操作的自定义 URL。
我可以做到这一点,但原始映射仍然有效。
例如,我创建了一个映射add-property-to-directory
in my UrlMappings
如下:
class UrlMappings {
static mappings = {
"/add-property-to-directory"(controller: "property", action: "create")
"/$controller/$action?/$id?"{
constraints {
// apply constraints here
}
}
"/"(view:"/index")
"500"(view:'/error')
}
}
现在我可以打/mysite/add-property-to-directory
它会执行PropertyController.create
,正如我所料。
不过我还是可以打的/mysite/property/create
,并且它将执行相同的PropertyController.create
方法。
本着 DRY 的精神,我想从以下位置进行 301 重定向:/mysite/property/create
to /mysite/add-property-to-directory
.
我找不到办法做到这一点UrlMappings.groovy
。有谁知道我可以在 Grails 中完成此任务的方法吗?
非常感谢!
UPDATE
这是我根据汤姆的回答实施的解决方案:
UrlMappings.groovy
class UrlMappings {
static mappings = {
"/add-property-to-directory"(controller: "property", action: "create")
"/property/create" {
controller = "redirect"
destination = "/add-property-to-directory"
}
"/$controller/$action?/$id?"{
constraints {
// apply constraints here
}
}
"/"(view:"/index")
"500"(view:'/error')
}
}
RedirectController.groovy
class RedirectController {
def index() {
redirect(url: params.destination, permanent: true)
}
}