2009-12-23 7 views
8

Tôi hiện đang làm tôi Grails 301 URL trang đổi hướng bằng cách sử dụng "phong cách servlet" khá cồng kềnh sau phương pháp:301 trong Grails

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

Có sạch hơn và nhỏ gọn hơn cách Groovy/Grails'y để thực hiện chuyển hướng 301?

Xin lưu ý rằng tôi đang nói về chuyển hướng 301, chứ không phải chuyển hướng 302 chuẩn có thể đạt được bằng cơ chế tiêu chuẩn Grails redirect(...).

Trả lời

12

Có, bây giờ có thể sử dụng redirect và chỉ định tham số permanenttrue như được mô tả here. Ví dụ:

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

@cdeszaq trả lời cập nhật – mbrevoort

+0

Tốt hơn là đặt tất cả chuyển hướng của bộ điều khiển thành trạng thái 301, theo như SEO có liên quan hoặc nên để chúng là 302? –

+0

@Euoliix Nếu chuyển hướng thực sự là vĩnh viễn, thì bạn nên sử dụng 301. Nếu Google thấy 302 thì được cho là sẽ kiểm tra lại URL sau. –

2

Cơ chế redirect trong Grails hiện hỗ trợ một tham số permanent:

permanent (không bắt buộc) - Nếu đúng chuyển hướng sẽ được cấp một mã trạng thái 301 HTTP (vĩnh viễn chuyển), nếu không, mã trạng thái HTTP 302 sẽ được cấp

Điều này sẽ giải quyết đầy đủ vấn đề của bạn và theo cách rất Grails-y.