Amazon S3にある静的サイトのドメインを変えました。SEOパワーを落とさないため、サーチコンソールで申請をしましたが、その際に起きた問題と解決策についてお伝えします。
もくじ
サーチコンソールでドメイン変更をリクエストする?
ドメインを変更したサイトがあり、なるべくSEO的にデメリットがない方法を模索していたところ、下の記事を見つけました。
常時HTTPS化+ドメイン名変更、SEOの悪影響ゼロで進めた手順をすべて公開!
サーチコンソールで移行手続きを行ったところ、SEO的に変化なく移行できたとのことです。
なので、私も同じやり方を踏襲することにしました。
作業後に気がつきましたが、上記サイトで紹介している例は、impress.co.jp
という昔からある超強力ドメインのサブドメインへの移行なので、新規ドメインへの移行でSEOパワーを維持できるかの前例にはなりません。
ざっくりした手順
1 新サイトを構築する
移行するドメインのサイトを構築します。S3でもいいですし、違うサーバーでもOKです。
S3の場合は、ほぼまるごとコンテンツコピーで良いのではないかと思います。
コンテンツ内に絶対パスがある場合は、修正する必要があります。
この時点では、まだgoogleにインデックスされないように設定しておいたほうがいいです。インターネット上に違うドメインで同じコンテンツがあるとGoogleがコピーコンテンツとみなしてペナルティを課してしまうリスクがあるためです。全ページのhead要素に以下を入れます。
1 |
<meta name=”robots” content=”noindex” /> |
WordPressの場合は、「設定>表示設定」から「検索エンジンがサイトをインデックスしないようにする」にチェックを入れれば上のタグが入るようになります。
可能な環境であれば、Basic認証をかけてしまってもいいかもしれません。
スポンサーリンク
2 新サイトのサーチコンソールのプロパティを作る
ドメインの変更をリクエストするためには、サーチコンソールで旧サイトとは別に新サイト用のプロパティを作る必要があります。
サーチコンソールでプロパティを作るためには、サイトの所有権を確認する必要があります。
- HTML ファイルをアップロード
- HTML タグ
- ドメイン名プロバイダ
- Google アナリティクス
- Google タグ マネージャー
という5つの方法がありますが、どれでも大丈夫です。手軽なのは1、2の方法だと思います。
3 旧サイトでリダイレクト設定
旧サイトの全ページから新サイトの同じパスへ301リダイレクトさせる設定をします。
ここで一番ハマりました。
S3のサイトからリダイレクトする設定については、
全リクエストを別のドメインの同パスにリダイレクトする機能があるし
これでうまくいかなくてもリダイレクトを細かく設定できるリダイレクトルールという機能があるので、すぐできるだろうと思っていました。
しかし、リダイレクト設定後も新サイトと旧サイトの所有権をサーチコンソールから確認ができる必要がある、ということがわかりました。
全ファイルをリダイレクトかけてしまうと旧サイトの所有権確認がうまくいかない可能性が出てきます。
旧サイトのファイルを配信する前に、新サイトにリダイレクトしてしまうからです。
リダイレクト設定後、旧サイトの所有権確認ができなくなると、下のようにサーチコンソールでアドレス変更リクエスト処理の3番目のステップが通らず次のメッセーッジが表示されてしまいます。
古いサイトの確認方法がありません。
最初に思いついた対処方が、S3のリダイレクトルールで、所有権確認用のHTMLファイルだけを除外して新サイトにリダイレクトするというルールを作ることです。
ですが、S3のリダイレクトルールは正規表現が使えません。なので、リクエストのパスを見て、〇〇を除外してリダイレクト、というのができないのです。
ググっていると次の記事をみつけました。
Webサイト移転に役立つS3+CloudFrontでのリダイレクト設定まとめ
リダイレクトに設定できる条件は、リクエストのパスだけではなく、<HttpErrorCodeReturnedEquals>
という要素でHTTPステータスコードから条件を設定できることがわかりました。
この要素は、リクエストがきたパスにファイルがない場合、404
というコードになります。なので、サイトの全ファイルを削除し、どのパスにリクエストがきても404を発生させます。そうすれば、全リクエストを新サイトにリダイレクトできます。
ここで、所有権確認の1番目の方法のファイルだけアップロードします。そうすればこのファイルが存在するので、サーチコンソールがこのファイルにアクセスしようとした場合、404は発生せずに所有権確認ができます。なので、以下のようなリダイレクトルールになります。<hostname>
要素には新サイトのドメインを入れます。
1 2 3 4 5 6 7 8 9 10 |
<RoutingRules> <RoutingRule> <Condition> <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals> </Condition> <Redirect> <HostName>new.com</HostName> </Redirect> </RoutingRule> </RoutingRules> |
ちなみに、旧サイトで404が発生しているということは、クライアントにも404が返されてしまっているのではないかと心配になりました。というのは、検索エンジンが404を検知してしまうと、コンテンツが無いと認識してしまうのでは?と思ったからです。
なので、クライアントにはどのようなHTTPステータスコードが返されるかChromeの検証機能の「ネットワーク」タブで見てみました。
このように301としか出ていないので安心しました。
これで3番目のステップも通過できます。
ちなみに、裏技的な感じですが、なんと所有権確認の2番目の方法のHTMLタグを、新サイトに、新サイトのタグと旧サイトのタグを両方記載しても3番目のステップが通る、らしいです。
4 サーチコンソールでアドレス変更のリクエスト
リダイレクトが設定できたら、新サイトのgoogleにインデックスされないように設定したタグを外します。
そして、サーチコンソールでリクエストの処理をします。
最近サーチコンソールの画面は新しくなったのですが、この機能はどうやら古い画面にしかないようです。
旧サイトのプロパティの画面右上のメニューから「アドレス変更」を押します。
あとは4つのステップを順番にこなしていくだけです。手順通りにやっていれば、スムーズに完了するはずです。
さいごに
いかがでしたでしょうか?
S3のサイトでドメイン変更をしている事例の記事が少ないので書いてみました。
しっかりSEOパワーが引き継がれるかなどは、今後お伝えしていければと思います。