重定向从旧域到新的(搜索引擎友好)

问题描述:

我改变了自定义域上的Heroku我的应用程序到一个新的。现在我将创建一个新的Heroku应用程序,其目的仅仅是重定向到第一个应用程序。重定向从旧域到新的(搜索引擎友好)

我在谷歌网站管理员读了我应该做301重定向这样的:

http://old.com/anypath/123 

to 

http://new.com/anypath/123 

如何做到在Rails的?

把这个在在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

但是,如何重定向所有请求,而不仅仅是“http://old.com/anypath/123" ? –

+1

@MartinPetrov,我更新了我的答案,以显示如何处理所有请求。 –

+0

谢谢,这看起来很简单。 –

在你的控制器动作:

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

然而,Heroku的有什么可以为slightly better option您在自己的开发中心记录在案:

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

谢谢。一个问题 - 这会将所有内容重定向到新域的根目录,还是会匹配新域中的确切页面? –

+0

已更新。 Ben虽然打败了我。 –

+0

也谢谢。对不起,不能标记你的答案。 –