ブログより転機: http://konyu.hatenablog.com/entry/2014/10/22/165553
同一ドメインで
herokuをプラットフォームで利用している場合に、
ドメインを取得してアプリを使用しても、デフォルトのドメインである
xxx.herokuapp.comからでもアクセスできてしまう。
SEO的にxxx.herokuapp.comでインデクシングされてしまうのはよろしくない(らしい)
なのでxxx.herokuapp.comでアクセスされたら301でリダイレクトさせてあげる
つまりアクセスしてほしいドメインが
だとすると
以下のように、ロボットにアクセスされた場合
このようにFQDNより下は同じにしてリダイレクトするようにする
修正ファイル
application_controller.rbで、ensure_domainを定義してやりbefore_filterで常に呼んであげる
before_filter :ensure_domain
# redirect correct server from herokuapp domain for SEO
def ensure_domain
return unless /\.herokuapp.com/ =~ request.host
# 主にlocalテスト用の対策80と443以外でアクセスされた場合ポート番号をURLに含める
port = ":#{request.port}" unless [80, 443].include?(request.port)
redirect_to "#{request.protocol}#{FQDN}#{port}#{request.path}", status: :moved_permanently
end
リダイレクト先の構成要素のメモ
- request.protocol => "https://" や "http://"
- request.port => 80, 443とかlocalだと3000
- request.path => "/users/100"
- FQDNはリダイレクトさせたい固定値