开发者

Redirect from old domain to new one (SEO friendly)

I changed the custom domain on my Heroku app to a new one. Now I will create a new Heroku app which only purpose will be to redirect to the first app.

I read in Google Webmasters that I should do a 301 redirect like this:

h开发者_C百科ttp://old.com/anypath/123

to

http://new.com/anypath/123

How do I do it in Rails?


Put this in a before filter in the 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


In your controller action:

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

However, Heroku has what may be a slightly better option for you documented in their dev center:

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


You can do this in the routes.rb file rather than a controller:

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

  # your existing routes here
end

This will do a 301 redirect, which is the default for the redirect route helper

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜