2009-12-23 4 views
8

В настоящее время я делаю свой Grails 301 URL-редирект с помощью следующего довольно громоздкого «стиля сервлета» метод: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, а не о стандартных перенаправлениях 302, которые могут быть достигнуты с использованием стандартного механизма Grails redirect(...).

ответ

12

Да, теперь можно использовать redirect и указать параметр permanent как true, как описано here. Например:

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

@cdeszaq answer updated – mbrevoort

+0

Лучше ли устанавливать перенаправления всех контроллеров на статус 301, насколько это касается SEO, или оставить их как 302? –

+0

@Euoliix Если перенаправление действительно постоянное, тогда вы должны использовать 301. Если Google видит 302, то, предположительно, он снова проверит URL-адрес позже. –

2

Механизм redirect в Grails в настоящее время поддерживает permanent параметр:

permanent (по желанию) - Если это правда редирект будет выдан код статуса 301 HTTP (постоянно перемещается), в противном случае будет выдан код статуса 302 HTTP.

Это должно адекватно решить вашу проблему, и в самом деле Grails-y.