2011-09-28 33 views
9

Tôi đã thay đổi miền tùy chỉnh trên ứng dụng Heroku của tôi thành ứng dụng mới. Bây giờ tôi sẽ tạo ra một ứng dụng Heroku mới mà chỉ có mục đích sẽ được chuyển hướng đến ứng dụng đầu tiên.Chuyển hướng từ miền cũ sang tên miền mới (SEO thân thiện)

Tôi đọc trong Google Webmasters rằng tôi nên làm một 301 redirect như thế này:

http://old.com/anypath/123 

to 

http://new.com/anypath/123 

Làm thế nào để làm điều đó trong Rails?

Trả lời

25

Đặt này trong trước khi lọc trong ApplicationControlller:

class ApplicationController 
    before_action :redirect_if_old 

    protected 

    def redirect_if_old 
    if request.host == 'old.com' 
     redirect_to "#{request.protocol}new.com#{request.fullpath}", :status => :moved_permanently 
    end 
    end 
end 
+1

Nhưng làm cách nào để chuyển hướng tất cả các yêu cầu, không chỉ "http://old.com/anypath/123 "? –

+1

@MartinPetrov, tôi đã cập nhật câu trả lời của mình để hiển thị cách thực hiện tất cả các yêu cầu. –

+0

Cảm ơn bạn, điều này có vẻ đơn giản. –

5

Trong hành động điều khiển của bạn:

redirect_to "http://new.com#{request.request_uri}", :status => 301 

Tuy nhiên, Heroku có gì có thể là một slightly better option cho bạn tài liệu trong trung tâm dev của họ:

class ApplicationController 
    before_filter :ensure_domain 

    APP_DOMAIN = 'myapp.mydomain.com' 

    def ensure_domain 
    if request.env['HTTP_HOST'] != APP_DOMAIN 
     # HTTP 301 is a "permanent" redirect 
     redirect_to "http://#{APP_DOMAIN}#{request.request_uri}", :status => 301 
    end 
    end 
end 
+0

Cảm ơn. Một câu hỏi - điều này sẽ chuyển hướng mọi thứ đến thư mục gốc của tên miền mới hay nó sẽ khớp với trang chính xác trong tên miền mới? –

+0

Đã cập nhật. Ben đánh tôi với nó. –

+0

Cảm ơn bạn. Rất tiếc vì bạn cũng không thể đánh dấu câu trả lời của mình. –

Các vấn đề liên quan