2009-12-23 52 views
8

我用下面很麻烦“的servlet风格”目前正在做我的Grails 301网址重定向方法:301重定向Grails中

def action = { 
    ... 
    if (shouldRedirect) { 
    response.status = 301 
    response.setHeader("Location", "http://url/to/redirect/to.html") 
    render("") 
    return false 
    } 
    ... 
} 

有没有更清洁和更紧凑的Groovy/Grails'y方式执行301重定向?

请注意,我正在谈论301重定向,而不是使用标准Grails redirect(...)机制可以实现的标准302重定向。

回答

12

是的,现在可以使用redirect并将permanent参数指定为true,如here所述。例如:

redirect(url: "http://url/to/redirect/to.html", permanent: true) 
+0

@cdeszaq答案更新 – mbrevoort 2012-03-24 23:22:11

+0

就搜索引擎优化而言,将所有控制器的重定向设置为状态301会更好吗,还是应该将其保留为302? – 2012-04-17 15:33:10

+0

@Euoliix如果重定向确实是永久性的,那么你应该使用301.如果Google看到302,那么它应该稍后再检查URL。 – 2013-05-08 19:53:25

2

redirect机制的Grails目前支持permanent参数:

permanent(可选) - 如果为true重定向可以在一个301 HTTP状态代码发行(永久移动)否则会发出302个HTTP状态代码

这应该能够充分解决您的问题,并且采用Grails-y的方式。