モフモフになれたら

本と映画と仕事と考えたこと

Herokuにお名前.comで入手した独自ドメインを設定する方法

ついにwebアプリもβ版公開まであと少しという段階になってまいりました。テスト環境ではうまく動いている気がするのであとは本番環境でテストをしてみよう、というところなのですが、アプリをHerokuにデプロイしたままでは、ドメイン"アプリ名.herokuapp.com"となってしまい、ちょっとダサいです。

一週間くらい悪戦苦闘してようやくHerokuに独自ドメインを設定する方法がわかったので、ここに記します。

Qiitaにもこんな記事がありますが。
http://qiita.com/numa08/items/d4ad9454f0baefc8c784
この記事通りにやろうとすると、

Recordの追加

追加したドメインの編集画面から、Add Recordを開き、レコードを追加します。TypeはCNAME、Contentはhogehoge.heroku.comなHerokuによって初期にもらえるドメインを指定します。

のところで躓いてしまいます。
どうやら無料プランではこの設定ができなくなっているようです。
他にググりまくってもなかなか良い解決方法が見つからない。こうなったら自分でいろいろやりまくるしかない!ということで一週間いろんな方法を試したら、下記の方法でうまくいきました。

まずは、Dozensの月1000円Basicプランに登録。(結局金がかかるのです)
Add a domainで独自ドメインを登録後、+Recordを押す。

Record Name 自分のアプリ名
Type ALIAS
TTL 1minuite
ALIASレコードをご利用の場合、TTLは強制的に「1 minute」となります。
Priority 空欄
Content  アプリ名.herokuapp.com

で入力。Dozens側の設定はこれで終わり。次はお名前.comの設定。

お名前.com→ドメインNavi→ドメイン設定→ネームサーバーの変更→登録情報は正しいので手続きに進める→他のネームサーバーを利用の画面でネームサーバー情報の欄に下記を入力。

ns1.dzndns.com
ns2.dzndns.com
ns3.dzndns.com
ns4.dzndns.com

これを登録して、1日ほどたつと、きちんとお名前.comで入手したドメインとHerokuappが紐付いている!
完璧!!

※追記 サブドメイン www.ドメイン名を統一させる方法。

dozens.jpの独自ドメイン管理画面でもう一度Add a domainを押す。

Record Name www.ドメイン
Type CNAME
TTL
ALIASレコードをご利用の場合、TTLは強制的に「1 minute」となります。
Priority 空白
Content
アプリ名.herokuapp.com

で登録して一日ほど待てば、www有りでも無しでもアクセス出来るようになります。
これだと、二つのwebページが存在することになりますので、wwwにアクセスしたときにwwwなしの方にリダイレクトされるように設定しましょう。

Gemファイルに

[rails]gem 'rack-rewrite'[/rails]

を追加。

[shell]bundle install[/shell]

application.rbに

[rails]    config.middleware.insert_before(Rack::Runtime, Rack::Rewrite) do
      r301 %r{.*}, 'http://xxxx.com$&', :if => Proc.new {|rack_env|
      rack_env['SERVER_NAME'] == 'www.xxxx.com'
    }
  end[/rails]

xxxの部分に独自ドメインを入れてください。
以上です。