【Google Analytics】重複するホスト名でデータが届いています の対処法
ウェブサイト運営に役立つ解析ツール「Google Analytics」。
ページの閲覧数などのデータを閲覧でき、サイト分析に役立ちますよね。
そんな「Google Analytics」で、「重複するホスト名でデータが届いています」といった表示が出る事があります。
このままだと解析データの正確性などに影響があるので、なるべく「ホスト名を統一」する事が推奨されています。
「ホスト名を統一」にはいくつか方法があるのですが、ここでは手軽に実装できる「.htaccessファイル」を使った対処法をまとめてみました。
重複するホスト名ってなに?
通常、独自ドメインなどを取得してウェブサイトを公開していると、複数のURLで同じページにアクセスできます。
例えば「https://sample.com」といったURLの場合、「https://www.sample.com」といった「www」つきのURLでも、同じページにアクセスする事ができます。
これは、インターネットが登場して間もない頃の設定の名残りで、ひとまず、そういうものなんだという認識でOKです。
重複するホスト名でデータが届く、というのは、「wwwなしURL」と「wwwありURL」で、それぞれページにアクセスがあった事を意味しています。
表示されるページ内容は同じですが、「Google Analytics」では「wwwあり」「wwwなし」を分けて計測するので、データが分散されて正確なデータが収集できない、といった事態になります。
また、アクセスが分散されるためSEO的に不利になる、といった側面もあるようです。
こういった事態を避けるために、「wwwあり」「wwwなし」のどちらかで、URLを統一しよう! というのが、今回の解決方法になります。
「Google Analytics」にサイトを登録する時に、「wwwあり」または「wwwなし」のどちらかで、ドメインを登録していますよね。
登録していないURLにアクセスがあった場合は、登録してあるURLへリダイレクト(自動転送)する設定をすれば、アクセスの分散を防ぐ事ができます。
たとえば私は「wwwなし」で「Google Analytics」に登録しているので、「wwwあり」URLにアクセスがあった場合は、「wwwなし」ページへリダイレクト(自動転送)するように設定しています。
「.htaccessファイル」にリダイレクト設定を書いて、ドメイン直下に設置すれば完了です。
はじめて「.htaccessファイル」を作る場合や、「ドメイン直下」ってどこ? と思うときは、良ければ、こちらも参考にしてみてください。
「wwwなし」URLで統一する
「wwwあり」URLにアクセスがあった場合、「wwwなし」ページへリダイレクトする「.htaccess」ファイルの書き方です。
「Google Analytics」に「wwwなしURL」で登録している場合は、こちらの設定を使います。
書き方によってサーバーとの相性があるので、2つの書き方をメモっておきます。書き方が違うだけで同じ設定なので、どちらか1つでOKです。
私の環境ではどちらでも問題なく動作していますが、2番めの方が書き方が簡単なので、私はこちらを使っています。
RewriteEngine on
#wwwなし
RewriteCond %{HTTP_HOST} ^(www\.ドメイン\.com)(:80)? [NC]
RewriteRule ^(.*) https://ドメイン.com/$1 [R=301,L]
RewriteEngine on
#wwwなし
RewriteCond %{HTTP_HOST} ^www.ドメイン.com [NC]
RewriteRule ^(.*)$ https://ドメイン.com/$1 [R=301,L]
「ドメイン」の部分を、お使いのドメインに変更すればOK。
「.net」「.biz」などのトップドメインをお使いの場合は、「.com」の部分も変更してくださいね!
また、もしSSL設定をしていない場合は「https」部分を「http」に変更してください。
「wwwあり」URLで統一する
「wwwなし」URLにアクセスがあった場合、「wwwあり」ページへリダイレクトする「.htaccess」ファイルの書き方です。
「Google Analytics」に「wwwありURL」で登録している場合は、こちらの設定を使います。
2つは書き方が違うだけで同じ設定なので、どちらか1つでOKです。
RewriteEngine on
#wwwあり
RewriteCond %{HTTP_HOST} ^(ドメイン\.com)(:80)? [NC]
RewriteRule ^(.*) https://www.ドメイン.com/$1 [R=301,L]
RewriteEngine on
#wwwあり
RewriteCond %{HTTP_HOST} ^ドメイン.com [NC]
RewriteRule ^(.*)$ https://www.ドメイン.com/$1 [R=301,L]
こちらも、「ドメイン」の部分をお使いのドメインに変更すれば完了です。
「.net」「.biz」などのトップドメインの場合は,「.com」の部分も変更してくださいね!
また、もしSSL設定をしていない場合は「https」部分を「http」に変更してください。
記述の解説
ここからは、「www」ある・なし指定の内容で、何がどう書かれているのか、さらっと知りたい方向けです。
私が普段使っている「wwwなしで統一」する書き方で見ていきます。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.ドメイン.com [NC]
RewriteRule ^(.*)$ https://ドメイン.com/$1 [R=301,L]
「RewriteEngine On」は、URLの書き換え機能(mod_rewrite)を使います、という宣言です。これがないと以下の記述は動きません。
「RewriteCond」は「次の条件に当てはまるかどうか?」を判定して、当てはまれば「RewriteRule」の内容(ルール)を実行します。
「%{HTTP_HOST}」ではリクエスト(ブラウザからサーバーへの「このページをお願い!」といった要求)を取得して、続くURLと同じかどうかを判定します。
ドメインの前についている「^」は先頭はここだよ、という指定で、後ろについている「 [NC]」は大文字と小文字を区別しないよ、という指定です。
「[R=301,L]」は「R=301」で301リダイレクトしてね、という指定で、「,L」は、ここでURL書き換え処理は終了だよ、という指定になります。
URL統一あれこれ
ここまで「.htaccess」ファイルを使った「wwwあり・なし」のURLの統一の仕方について見てきました。
ここでは通常のコンテンツページのURLの統一化をしてきましたが、実はサイトのトップページでも「index.html」の有無などで、URLが複数存在しています。
そういった「もう一歩踏み込んだURLの統一」をしたい時は、こちらも参考にしてみてください。