同一ドメインで herokuをプラットフォームで利用している場合に、 ドメインを取得してアプリを使用しても、デフォルトのドメインである
xxx.herokuapp.comからでもアクセスできてしまう。
SEO的にxxx.herokuapp.comでインデクシングされてしまうのはよろしくない(らしい)
なのでxxx.herokuapp.comでアクセスされたら301でリダイレクトさせてあげる
つまりアクセスしてほしいドメインが
www.example.com
だとすると
以下のように、ロボットにアクセスされた場合
このように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.uri}", status: :moved_permanently # パラメタが必要な場合は、request.fullpath、切りたい場合は request.path end