この記事は約7分で読めます。
本文は約4081文字です
CNAMEレコードはどんな時に使う?別サーバーにリダイレクトできる?
ドメイン変更やサーバー移転でよく使われる301リダイレクトは、.htaccessを使うのが一般的だと思います。
DNSレコードの中にCNAMEレコードというものがあり、wwwサブドメインを定義しているのをよく見かけます。
このようなことから、CNAMEレコードはwwwサブドメインをリダイレクトしていると感じる人が多いかもしれません。
この記事では、CNAMEレコードはリダイレクトの代わりに使えるのか?についてまとめてみたいと思います。
CNAMEレコードとは何か?
正規名(CNAME)レコードは DNS レコードの一種で、エイリアス名を実際の正規ドメイン名にマッピングします。
https://support.google.com/a/answer/112037?hl=ja
CNAME レコードは通常、www や mail などのサブドメインを、そのサブドメインのコンテンツをホストするドメインにマッピングするために使用します。
たとえば CNAME レコードを使用して、ウェブアドレス www.example.com をドメイン example.com の実際のウェブサイトにマッピングできます。
CNAMEの一般的な使い方は、サブドメインに対して利用されます。
また、CNAMEレコードのよくある使い方として、レンタルECなどで独自ドメインを導入するときに、wwwありのアドレスをレンタルECのサーバーにマッピングする際に使われる事例があります。
CNAMEレコードの指定方法
CNAMEレコードは、マッピング先としてIPアドレスを指定することができません。
必ずホスト名にする必要があります。
また、CNAMEレコードは、サブドメイン無しのホストに対して指定することはできません。
必ず、サブドメインに対してCNAMEを定義する必要があります。
例)ドメイン名:abc.comの場合
www.abc.comをCNAMEで、www.example.comにマッピングする
【設定可能】
ホスト名:www
VALUE:www.example.com
⇒www.abc.comのDNSレコードを名前解決しようとした場合、www.example.comのレコードが参照されます。
※www.example.comのレコードはexample.com側で設定されている必要があります。
CNAMEレコードの名前解決の順番
www.abc.comにアクセス、www.example.comを名前解決してIPアドレスを取得、そのIPアドレスがwww.abc.comの名前解決結果になる。
www.abc.comにアクセスがあった時に、www.example.comのIPアドレスがwww.abc.comのポイント先になります。
つまり、Aレコードの代わりにCNAMEを定義していると考えるとわかりやすいです。
www.example.comのサイト自体を参照するのではなく、www.abc.comを名前解決する時に、www.example.comのIPアドレスを使うというだけです。
※CNAMEレコードはURLの転送とは異なります。Webサイトとしてアクセスした場合、
サーバーへのリクエストはwww.abc.comのホスト名で行われるため、
www.example.comのIPアドレスのサーバー上にwww.abc.comのWebサイトが存在しない場合はエラーとなります。
CNAMEで全てのサブドメインをマッピングすることは可能か?
CNAMEレコードでサブドメインをひとつづつ定義していくのは手間です。
全てのサブドメインを対象にCNAMEレコードを一回で定義する方法はあるのでしょうか?
あります。
サブドメインを”*”で指定することで、全てのサブドメインを指定することができます。
CNAMEレコードでリダイレクトは可能なのか?
CNAMEレコードは、アクセスされた時にドメインを書き換えないからです。
例えば、www.hogehoge.comが、CNAMEでhogehoge.comにポイントされていても、表示はwwwありのままです。
同じようにして、CNAMEを使って、他のサイトへ接続させることもできますが、ドメインは変更されません。
ですので、レンタルECなどのサーバーにCNAMEで接続すると、URLは独自ドメインのまま、接続先がCNAMEの接続先になります。
CNAMEレコードがリダイレクトされるケースもある
CNAMEレコードを指定してリダイレクトされる場合はないのですか?
特殊な場合はリダイレクトされます。
BASEやShopifyなどのレンタルECやWiXやJimdoなどのCMSで独自ドメインを適用する場合、CNAMEレコードを指定することで独自ドメインを割り当てます。
外部サービスに独自ドメインを割り当てるので、CNAMEレコードのポイント先は別のドメインのサーバーになります。
通常、相手側が特別な処置をしていない場合、通常のCNAMEレコードのようにドメインをマッピングして表示することはできません。
その場合は、CNAMEレコードで外部サイトを指定すると、そのサイトにリダイレクトされます。
BASEやShopifyなどのレンタルECやWiXやJimdoなどのCMSで独自ドメインを適用する場合、有効になるまで時間がかかります。その間に、独自ドメインにアクセスすると、独自ドメインが有効になっていないサイトにリダイレクトされます。
CNAMEで自分が所有していない関係ないサイトをドメインマッピングできてしまうと、おかしなことが起こることは予想できますよね。
例えば、amazonのサイトを自分のドメインで公開することができてしまいます。でも実際には、それはできません。CNAMEレコードにそのように定義したとしても、リダイレクトされるだけで、URLは書き換わってしまいます。
レンタルECやWiXやJimdoなどのCMSでCNAMEを使うのは、Aレコードが変わっても影響を受けないようにするためです。つまり、CNAMEを使わずに、サブドメインにレンタルEC等のAレコードを直接指定しても同じことです。
独自ドメインのサブドメインのCNAMEもしくはAレコードで、レンタルECやWiXやJimdoなどのCMSを指定して、独自ドメインのサイトとして表示できるのは、DNSレコードの指定だけでなく、ポイント先がそのドメインでサイトを表示できるように設定している場合だけです。
CNAMEでサブドメインを別サーバーに接続できる?
あるサブドメインだけ別サーバーでホストしたい時に、CNAMEレコードを使えるのでは?と思うかもしれません。
結論から言えば出来なくはないですが、サブドメインに別サーバーのAレコードを指定する方が一般的です。
CNAMEはIPアドレスを指定できませんので、サブドメインだけ別サーバーのドメイン名を指定することで、Aレコードを指定しているのと同じことができます。
しかし、その場合、別サーバー側にも、サブドメインでサイトがあるのが前提です。
例
www.abc.comだけabc.comとは別サーバー(IP:111.111.111.111/domain:xyz.com)で運用したい。
別サーバーに、www.abc.comのドメインを追加してサイトを設置しておく。
www.abc.comの名前解決のポイント先が、IPアドレス111.111.111.111であればよい。
www.abc.comのAレコードをIPアドレス111.111.111.111として指定するか、CNAMEを使う場合は、IPアドレス111.111.111.111に名前解決されるドメイン名:xyz.comを指定してあげればよい。
まとめ
CNAMEレコードは、Aレコードの代わりにホスト名を指定しているだけです。だからURLを書き換えは発生しません。そう覚えておくと、リダイレクトに使えないことがわかると思います。
同一サーバー内で、旧ドメインと新ドメインのサイトがある場合、CNAMEで新ドメインを旧ドメインからポイントしたとします。その場合、旧ドメインにアクセスすると、新ドメインのIPアドレスと旧ドメインのIPアドレスが同じであるっため、表示は旧ドメインの内容が表示されます。
別サーバーで、旧ドメインと新ドメインのサイトが別々にある場合、CNAMEで新ドメインを旧ドメインからポイントしたとします。その場合、旧ドメインにアクセスすると、新ドメインのIPアドレスと旧ドメインのIPアドレスが異なりますので、旧ドメインを名前解決した結果であるIPアドレスは新ドメインのサーバーと同じになります。新ドメインに旧ドメインのサイトがあれば、旧ドメインのサイトが表示されますが、新ドメインのサーバーに旧ドメインのサイトが存在しない場合は、サイトが無いので表示されません。
ドメインを正規化しなくていい用途であれば、CNAMEは便利に使うことができます。
コメント