从旧域重定向到新域(SEO友好)

时间:2011-09-28 05:46:45

标签: ruby-on-rails

我将Heroku应用程序上的自定义域更改为新域。现在我将创建一个新的Heroku应用程序,其唯一目的是重定向到第一个应用程序。

我在Google网站管理员中读到,我应该像这样进行301重定向:

http://old.com/anypath/123

to

http://new.com/anypath/123

我如何在Rails中执行此操作?

3 个答案:

答案 0 :(得分:31)

将它放在ApplicationController中的before过滤器中:

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 :(得分:5)

在您的控制器操作中:

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

答案 2 :(得分:0)

您可以在routes.rb文件而不是控制器中进行此操作:

Rails.application.routes.draw do
  constraints(host: 'old.com') do
    get '(*)', to: redirect(host: 'new.com')
  end

  # your existing routes here
end

这将执行301重定向,即the default for the redirect route helper