ヤクとアヒル

日常の問題を解決したときにつけるログ

はてなブログに設定した独自ドメインを別のドメインに変更する方法

はてなブログProのドメインを設定した状態で,新たに違うドメインへ変更しようとした際に適切にリダイレクトする方法を解説します.

.techドメインの利用料が値上げされたのでドメインを変更することにした

このブログは,はてなブログの有料サービスはてなブログProを利用して運営しています.はてなブログ独自ドメインを簡単に設定できます.このブログもお名前ドットコムで取得したwww.letstouch.techというドメインを利用していました.

先日,お名前ドットコムから.techドメインの年間利用料を値上げする(3980円 -> 4980円)という告知があったことがきっかけで,ドメイン名を変更することにしました.

ドメインの価格:.comとか安くて無難

利用料を考えると.com .org .infoなどの古参ドメインが比較的安いです.最近追加されているgLTDドメイン.techとか.worksのようなやつ.詳しい解説は JPNICの資料とか見てください)は高め.

問題:はてなブログドメイン変更手続きをしなければいけない

現状の整理

取得したドメイン
はてなブログProでの独自ドメイン設定方法

ドメインを取得したら,CNAMEレコードとしてhatenablog.com.を指定し,はてな側で利用するドメインを指定するだけです.

f:id:motoso:20160807180353p:plain

はてなブログを独自ドメインで利用する - はてなブログ ヘルプ

このブログはお名前ドットコムで取得したletstouch.techというドメインを利用していたため,www.letstouch.techのCNAMEレコードをhatenablog.com.としていました.

このようにCNAMEレコードを設定すると,www.letsouch.techへのアクセスはhatenablog.com.へのアクセスのエイリアスと解釈されるため,はてなブログに正常にアクセスできるというわけです.

サブ問題:新規ドメインだけを利用すると旧ドメインのアクセスが404エラーになる

はてな側の設定を新規ドメインのものにする必要があるので,次の設定が必要です.

しかし,これだけでは問題があります.はてな側の設定をこのように変えてしまうと,旧URLから記事にアクセスすることができなくなってしまいますはてな側でwww.letstouch.techの対応先の情報が消失するためです.

このようドメインを変更してしまうと,Google検索でヒットするのは旧URLのほうなのに,それを踏むと404エラー(そんなブログはないので表示できない)になってしまいます.新たにサイトを作ってそこにコンテンツをおひっこしした状態になるわけです.検索にひっかかりにくくなってしまいます.

やってみた:旧ドメインのCNAMEレコードに新ドメインを追加した

このため,この設定に加えてwww.letstouch.techへのアクセスをwww.yuk-and-duck.comのアクセスとみなすようにする必要があります.そこで旧ドメインのCNAMEレコードを新ドメインにひも付けました.つまり以下の様な設定にしました.これは,間違った対応でした.

結果:404エラーが返るようになった

上述の設定で一晩放置した結果,アクセス件数は0件になりました.旧ドメインへのアクセスが正しくこのブログへのアクセスとみなされなくなっていました.

f:id:motoso:20160807175851p:plain 図:0時から12時までアクセスが不能になった.12時に後述の対応をした結果アクセス可能となった.

なぜアクセスできなかったのか

上記の設定の状態で新ドメインにアクセスすると,次の画面になりました.

f:id:motoso:20160807175959p:plain

はてなの404ページが表示されていることから,はてなドメインに正しくアクセスできていることがわかります.しかし僕のブログにはアクセスできていません.どうも,CNAMEレコードを上記のように設定しても,新ドメインからのアクセスではなく,旧ドメインからのアクセスとしてはてな側で扱われるようです.

内部の実装はわからないのですが,上述のようにCNAMEを設定した状態の旧ドメインにアクセスすると次のようになると考えると納得がいきます.

  1. ドメインのCNAMEレコードであるhatenablog.com.のIPにアクセスする
  2. はてなブログ側では旧ドメインからのアクセスのように見えるため,そのドメインと対応するサブドメインのデータを返そうとする
  3. ブログが存在しないので404となる

解決策:適当なサーバを経由してブログにリダイレクトさせた

DNSの設定をいじっても解決不能ということがわかったので,サーバで適切にリダイレクトするようにします.

お名前ドットコムのリダイレクトサービスURL転送Plusを使うとドメインへのアクセスをリダイレクトできるようですが,何故か設定に失敗しました.また,このサービスの転送は302で行われるようなのでGoogleの検索結果の順位がさがるため,よろしくないです.

301リダイレクトと302リダイレクトの違い | 海外SEO情報ブログ

そこで,旧ドメインのAレコードを適当なWebサーバに指定して,そのサーバから新ドメインにリダイレクトするようにしました.こうすると,旧ドメインへのアクセスは一度Webサーバを経由し,新ドメインにリダイレクトされ,新ドメインへのアクセスとしてはてなに認識されるので問題なくアクセスできるはずです.

必要なもの

  • nginxを設定できるサーバ

僕はさくらのVPSでnginxを動かしていたので設定を数行加えただけです.

設定方法

  1. ドメインのAレコードにnginxを立てるサーバのIPアドレスを指定します
  2. サーバにnginxをいれて起動します
  3. /etc/nginx/conf.d/default.confに次の設定を追加します.(ドメイン名はletstouch.techを旧ドメインに,yuk-and-duck.comを新ドメインに各自変更してください)
  4. /etc/init.d/nginx restart で再起動すれば設定完了です.

以上で旧ドメインへのアクセスも正しく新ドメインへリダイレクトされるようになりました.

nginx実践入門 (WEB+DB PRESS plus)

nginx実践入門 (WEB+DB PRESS plus)

スポンサーリンク