我正在使用Grails 2.1.1
并希望添加一些映射到控制器操作的自定义 URL。
我可以这样做,但原始映射仍然有效。
例如,我add-property-to-directory
在我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 重定向 from /mysite/property/create
to /mysite/add-property-to-directory
。
我找不到在UrlMappings.groovy
. 有谁知道我可以在 Grails 中实现这一点的方法吗?
非常感谢你!
更新
这是我根据汤姆的回答实施的解决方案:
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')
}
}
重定向控制器.groovy
class RedirectController {
def index() {
redirect(url: params.destination, permanent: true)
}
}