Contents
概要
社名変更やサービス名変更に伴うサービスサイトURL変更時のリダイレクト設定について備忘録的にまとめておきたいと思います。
結論から言うと、ドメインプロバイダが提供しているサイト転送設定ではhttp://~から始まるアドレスしかリダイレクトの対象とならない(=https://~にアクセスしてもリダイレクトされない)ため、私は個人保有しているサーバーで.htaccessファイルを利用して転送設定を行いました。
ユースケース
社名・サービス名をcatからnekoに変更する際に、下記のリダイレクト設定を行う。
■コーポレートサイト
http://cat.co.jp → https://neko.co.jp
https://cat.co.jp → https://neko.co.jp
■サービスサイト
http://cat.com → https://neko.com
https://cat.com → https://neko.com
リダイレクト実装の選択肢
①ドメインプロバイダが提供しているサイト転送設定(※事実上不可)
②DNSレベルでの解決(※事実上不可)
③サーバーサイドリダイレクト
④meta refreshリダイレクト
⑤JavaScriptリダイレクト
※パフォーマンス・Google評価の両観点で③>④>⑤の順の優先度。
ドメインプロバイダが提供しているサイト転送設定
ドメインプロバイダによってはサイト転送設定が提供されていることがある(参考:「お名前.com 転送Plus」)
しかしながら、(現在では利用されることのない)http://~から始まるアドレスのみが転送対象のため、事実上使い物にならない。
DNSレベルでの解決
CNAMEレコードで別名を定義する方法は、以下のような限定なケース以外では利用できない。
- 同一ドメイン内での別名定義
- CDN(Content Delivery Network)
- その他CNAMEレコード利用を前提とした任意のサービス
というのも、CNAMEは”リダイレクト(URLの転送)”ではないため、(別名のAレコードで定義されたIPアドレスの)サーバーへのHTTPリクエスト時のホスト名は転送元のドメインのままとなる。
結果として、アクセス先のサーバーに旧ドメインと同名のリソースが存在しない限り、404エラー(※存在しないページへのアクセス)となる。
■実際に試した例
test.testisandoria.comの別名google.comを定義すると、google(のAレコード)に対してtest.tesisandoria.comのURLのページがないかどうかを問い合わせる動作となる。
↓
サーバーサイドリダイレクト(※Xserverの場合)
- (ドメインプロバイダのDNS設定でネームサーバ変更 ※うろ覚え)
- Xserverの「サーバーパネル」にログイン
- 「ドメイン設定」で古いドメイン(=転送元にしたいドメイン)を登録
- 「.htaccess編集」で下記コードを設定(※”https://neko.co.jp”の部分を転送先アドレスに置き換える)
SetEnvIf Request_URI ".*" Ngx_Cache_NoCacheMode=off
SetEnvIf Request_URI ".*" Ngx_Cache_AllCacheMode
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* https://neko.co.jp [R=301,L]
</IfModule>
meta refreshリダイレクト
HTMLドキュメントのHeader内に以下を一行追加。
読み込み順序的にJSより圧倒的に早い。
<meta http-equiv="refresh" content="0; url=https://neko.co.jp" />
JavaScriptリダイレクト
HTMLドキュメントのHeader内に以下を記述。
<script type="text/javascript">
window.location.href('http://neko.co.jp')
</script>
STUDIOのようにJS触れないサービスの場合は、GTM(Google Tag Manger)経由で上記コードを動かす。
①トリガを作成
②タグを作成