
herokuのサイトをwwwなし独自ドメインで
heroku上に立ち上げたサイトを、独自ドメインで運用する方法です。
他にも書いて下さっているサイトはありますが、一つ設定を忘れて意図した通りにアクセスできなかったことがあったので、備忘録としてまとめました。
heroku上のURL : nantoka.herokuapp.com
使うドメイン : nantoka.jp
URL : wwwなし
と、したときの例です。
herokuは設定画面を使ってます。コマンドで設定したいときは、ぐぐってください。
■ heroku
1.
herokuの管理画面にログインし、設定したいアプリの”Settings”タブを開く。
画面上部のOverview、Resources、Deploy、……と並んでいるところですね。
2.
Domains の欄
Heroku Domain nantoka.herokuapp.com となっている下の
Custom Domainsに、Add domainボタンを押して、独自ドメインを追加。
Domain Name : DNS Target
nantoka.jp : nantoka.herokuapp.com
www.nantoka.jp : nantoka.herokuapp.com
wwwありとなし、どちらも追加するのを忘れないようにしてください。
■ DNS
nantoka.jpを丸ごとnantoka.herokuapp.comに転送したいのですが、
nantoka.herokuapp.comは固定IPアドレスがないので、ALIASというレコードを使わざるを得ません。
しかし、多くのドメイン管理サービスやレンタルサーバーのおまけで使えるDNSでは、このレコードが入れられない、今現在。
herokuのアドオンで、最低限なら無料で使えるALIAS対応のDNSがあります。
1.
herokuの ”Resources” タブを開き ”Add-ons“ に ”pointDNS“ を追加。
検索欄に打てばすぐ見つかります。
2.
アドオン一覧から、追加した pointDNS の設定ページを開く。
My Domainsに、nantoka.jp を追加。
3.
ドメイン一覧からnantoka.jpを選ぶと、DNSレコード編集画面に。
無料だとレコード数が10行までなので、デフォルトでたくさん入っているNSレコード dns●●.pointhq.com. を2~3行まで減らしましょう。(これがドメインのネームサーバーになります)
別に2~3個まで減らさなくても、追加したいレコードの分、空ければかまいません。
私はExchange用のレコードも登録したかったので、思い切りよく削除しましたが。
4.
“+add record” ボタンから、ALIASレコードを追加して、nantoka.jpをherokuappに結びつける。
CNAMEレコードで、wwwつきのアクセスも、herokuappに結びつける。
■ ドメイン
上のDNS設定の3で残したNSレコードのサーバーを、このnantoka.jpのネームサーバーとして登録します。
Value Domainだと、この、ドメイン一覧の、該当ドメインの、”ネームサーバー”からです。2~3個登録しておいてください。
後で、またNSレコードを削除するときに、ここで登録したものを消さないように注意してください。
■ ウェブサーバー(httpd.comfもしくは.htaccess)
上の設定で、wwwあり・なし・herokuappの三種類のアドレスで、サイトにアクセスできるようになりました。
しかし、nantoka.jp以外でのアクセスは、全てnantoka.jpに転送してしまいましょう。
.htaccessファイルでの転送設定です。
もちろん、ウェブサーバーが管理下にあるときは、httpd.confに書いても良いです。
ルート直下に .htaccess ファイルを置いて、以下のように記載。
1 2 3 4 5 6 |
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_HOST} nantoka.herokuapp.com [OR,NC] RewriteCond %{HTTP_HOST} www.nantoka.jp [NC] RewriteRule .* http://nantoka.jp%{REQUEST_URI} [L,R=301] </IfModule> |
NCは大文字小文字の区別なし、ORは、その行もしくは次の行のとき、という条件。
これで、nantoka.jpでだけ、heroku上のサイトを見られるようになりました。
■ おまけ
そのサイトがwordpressで、パーマネントリンクを変更する設定をしているときは、こんな感じで融合させます。
他のフレームワークなども、この要領で。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_HOST} nantoka.herokuapp.com [OR,NC] RewriteCond %{HTTP_HOST} www.nantoka.jp [NC] RewriteRule .* http://nantoka.jp%{REQUEST_URI} [L,R=301] # BEGIN WordPress RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress </IfModule> |
※
heroku上のWordPressの設定画面からパーマネントリンクを変更しても、翌日には消えてしまいます。自動で.htaccessを作っているためGit管理されないので、なかったことにされてしまうのです。でも、パーマネントリンク変更のWPの設定だけは残っているので、サイト内でリンク切れが……。
そうならないように、WPでパーマネントリンクを変更する設定をしたら、すぐに、Git追加できる環境で、以下の最低限の .htaccess は作ってあげてください。
1 2 3 4 5 6 7 8 9 |
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress |