2009-12-23 48 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的方式。