Webサイト公開時に重複コンテンツを排除する.htaccessのリダイレクトの設定のまとめ
2017/03/11
重複コンテンツを排除する.htaccessの設定
SEO的視点から重複コンテンツは排除すべき
Googleは、同じ内容のページを重複コンテンツとして処理します。
「記事の使いまわしもしていないし、コピーコンテンツもないから重複コンテンツなんてないよ」と思っていても、知らず知らずのうちに重複コンテンツを生み出している場合があります。
今回紹介する方法は、下記の 4つの対応です。
- 「http」を「https」にリダイレクトする
- 「www.」を表示するかしないかを正規化する
- 「index.html」を表示するかしないかを正規化する
- エックスサーバでサブフォルダを表示させない
例えば、
http://s-giken.net/index.php
http://s-giken.net
は同じページが表示されますので、内容は全く同じなのですが、URLは違うものとなります。
そのため、これが重複コンテンツとして処理されてしまうわけです。
これは意図して重複コンテンツを作ろうとしたのではなく、サーバの仕様、使用している WordPressの仕様などによって発生しうる重複コンテンツなのです。
これらの意図せずに発生する重複コンテンツを一つにする(正規化する)ことで重複コンテンツをなくし、Googleから正しい評価を与えてもらえる環境にしよう、ということがこの記事での趣旨です。
「http」を「https」にリダイレクトする
SSLの対応をした場合、URLは
http://...
から
https://...
に変わります。
ですが、何も設定しない場合は、httpでも httpsでもアクセスすることができますので、重複コンテンツとなってしまいます。
そのため、httpでアクセスした場合は httpsにリダイレクトさせる必要があります。
ドキュメントルートにある .htaccessに下記の記述を追加します。
1 2 3 |
RewriteEngine on RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://example.com/$1 [R=301,L] |
「http」を「https」にリダイレクトする .htaccessの解説
上記の .htaccessの記述ですが、内容は非常にシンプルです。
1行目は URLをリダイレクトするための処理を開始します、という宣言です。
2行目はアクセスが httpsかどうかの判断です。
httpsでのアクセスが offの時、つまり、httpでアクセスしたとき、という条件です。
3行目が、リダイレクトをする処理です。
「example.com」の部分を自分のサイトの URLを設定します。また、「www.」やサブドメインがある場合はそれも含めて記述をします。
「^(.*)$」は、正規表現で記述されたドメインを除いた URLの部分で、「$1」の部分に置き換えられて編集されます。
「[R=301,L]」は、301リダイレクト(恒久的に URLが変更になったリダイレクト)であり、「L」の部分はリダイレクトをしたらこのリダイレクトルールの適用は終了です、ということを指定しています。
また、3行目は、下記のように表現することもできます。
1 |
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} |
「http」と「https」の両方にアクセスできる場合の Googleの処理
httpと httpsの両方の URLが存在する場合の Googleの検索結果への対応ですが、現状では特にペナルティもなく、httpsの方を優先的に出してくれます。
そのため、httpと httpsの両方でアクセスできることにメリットがあれば、積極的に httpsにリダイレクトする設定をしない、という判断も可能です。
SSL対応する場合の WordPressの対応
WordPressでは、左メニューの「設定」-「一般」から遷移する「一般設定」の画面に「WordPress アドレス (URL)」「サイトアドレス (URL)」を設定する項目があります。
ここにはサイトの URLを入力しますが、SSLに対応するサイトを構築した場合は、個々の設定も https://... のURLになっているかを確認しておきましょう。
「www.」を表示するかしないかを正規化する
多くのレンタルサーバでは、下記のように「www.」があってもなくても同じページを表示するようになっている場合が多々あります。
http://example.com/
http://www.example.com/
「www.」のありなしのどちらでもアクセスできる便利な機能なのですが、SEOの視点から見た場合は、これも重複コンテンツとしてみなされてしまいますので、「www.」を付けるのか、なしでいくのか、それを決めたうえで統一をする必要があります。
SEOの視点からは、「www.」があるか、ないかによる違いはありません。
入力が楽、という理由で「www.」なしの方がいいんじゃないか、と思う程度です。
この「www.」あり、なしの統一も .htaccessにリダイレクトの設定をすることで対応を行うことができます。
「example.com」の部分は、各自のドメインに変更をしてください。
「www.」ありに統一する場合
1 2 3 4 |
Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^example\.com$ RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L] |
「www.」なしに統一する場合
1 2 3 4 |
Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.example\.com$ RewriteRule ^(.*)$ http://example.com/$1 [R=301,L] |
「index.html」を表示するかしないかを正規化する
最初のサンプルで説明しましたが、弊社のコーポレートサイトは、下記のいずれの URLでも同じページが表示されます。
http://s-giken.net/index.php
http://s-giken.net
ですが、Googleは別のページとして認識しますので、これもどちらかに統一しておく必要があります。
※弊社のコーポレートサイトで、inxe.phpのありなしの正規化をしていないのは特に理由はありません。単に面倒でやっていないだけです。
が、ここで記事にしてしまったのでやれなくなりましたね(苦笑)。
WordPressの場合は index.phpは表示されませんが、静的な HTMLで組んだサイトの場合は、index.htmlを出すか出さないかは好みの問題です。
出さない方が URLが短くなるのでいいかな、と思う程度です。
「index.html」を表示するかしないかを正規化する場合の .htaccessのリダイレクト設定は以下のようになります。
1 2 3 4 |
Options +FollowSymLinks RewriteEngine on RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule ^(.*)index.html$ http://www.example.com/$1 [R=301,L] |
3行目で「index.html」を条件にして「index.html」を表示しないようにする設定になっています。
「index.html」を「index.php」に変更することもできます。
ただし、「index.html」と「index.php」の両方の対処をしたい場合は下記のようになります。(2通りの記述の方法があります。)
1 2 3 4 5 6 |
■1行にまとめて書く場合 RewriteCond %{THE_REQUEST} ^.*/(index.html|index.php) ■2行に分けて書く場合 RewriteCond %{THE_REQUEST} ^.*/index.php [OR] RewriteCond %{THE_REQUEST} ^.*/index.html |
※「RewriteCond」は条件を記述するところですが、「[OR]」を指定しない場合は「[AND]」が指定されたものとみなされますので、条件に合致しなくなりますので注意が必要です。
サブフォルダがサブドメインの場合(エックスサーバ)
エックスサーバのサーバ設定では、サブドメインのドキュメントルートは、ドメインフォルダの中にサブフォルダとして設定されます。
そのため、下記の 2つの URLが同じページを見ることになります。
http://blog.example.com
http://example.com/blog
エックスサーバなど一部の共有サーバの場合は、サーバの仕様上サブフォルダとサブドメインが同じ場所となりますので、そのままにしておくとこれも重複コンテンツとなってしまいます。
そのため、サブフォルダ形式ではアクセスできないように制限を行います。(ロリポップサーバなどは全く関係ない話ですが。)
そのほかの設定と同じく、.htaccessに下記の情報を設定します。
1 2 3 4 5 |
# サブフォルダでのアクセス禁止 SetEnvIf Host "^blog.example.com$" host order deny,allow deny from all allow from env=host |
重複コンテンツに対する正確な理解
重複コンテンツを作るとペナルティを受ける、と考えている方は多いのですが、正確にはマイナスのペナルティーを受けるわけではありません。
例えば、先に説明したとおり、下記のページは同じページが表示されます。
http://s-giken.net/index.php
http://s-giken.net
これに対して、Googleがどちらかのページにペナルティーを与えるということはありません。
ですが、これらの重複コンテンツに限った話ではないのですが、同じような情報が掲載されているページが複数あった場合、Googleは、検索結果の一覧には「一番重要な情報が掲載されている」と判断したページのみを表示しようとします。
そのため、重複コンテンツのページは、いずれか 1ページのみ表示がされることになります。
「どちらかが表示されるならいいじゃないか」と思うかもしれませんが、同じ内容のページが複数ある場合、Googleの評価もアクセスも複数のページに分散されるため、トータルで見ると検索結果の上位には出てきにくくなる、ということにつながるわけです。
分かりやすく数値で表現するなら、正しい処理(正規化)をしている場合は、1ページだけとなりますので、100点の 1ページが存在していると判断されます。
ですが、重複ページが存在すると、50点のページが 2ページ存在していると判断されます。
そうなると、100点のページは検索にヒットする可能性がありますが、50点のページではその他のサイトのページの方がポイントが高くなりますので、そもそもどちらも表示されなくなる、ということにつながるわけです。
なので、重複コンテンツにつながる事象は排除し、このサイトではこの URLの表現が唯一のものです、ということを明確にすべきなのです。
そして、その作業のことを Googleは「正規化」と呼んでいて、サイトの管理者は対応すべきものとして案内しています。
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
Gitで基本的なデプロイ(push、pullで本番公開)環境を作る手順解説
開発進行中の環境、公開中の環境にGitを導入する。その基本的な手続きを解説。Gitの導入、ローカルリポジトリを作成。リモートリポジトリを利用し、本番環境にデプロイする手続きを解説。
-
Apacheの起動しているかの確認方法と起動、再起動、終了のコマンド
Apacheが起動しているかを確認する方法の解説に加え、Apacheの起動、停止、再起動のコマンドを解説。再起動のコマンドには restart、condrestart、reload、gracefulがあり、違いを解説。
-
借りてはいけないレンタルサーバ実例4社・アルファメール・WEBアリーナ
餅は餅屋。サーバはサーバ屋が提供するサービスを利用するべきという記事で、具体例 4サービスを例にこんなサーバはNGと紹介しています。
-
mod_pagespeedでWebサイトを超簡単高速化・Google謹製の最終兵器
Webサイトの表示スピード高速化の最終兵器、Google謹製mod_pagespeedの解説です。レンタルサーバではX-Serverでしか利用できませんが、ワンクリックで高速化します。
-
.htaccessのmod_expiresでブラウザキャッシュで高速化でSEO対策!
Page Speed Insightsの指摘事項のファイルのブラウザキャッシュの設定方法。解説もしてるけど、.htaccessにコピペするだけの簡単設置で効果抜群!SEOにも威力を発揮!
-
Beautiful Soupを利用してPythonでスクレイピングを行う環境構築方法の解説
BeautifulSoupはPythonでスクレイピングを行う際に便利なツール。インストール方法も簡単。ただ、事前にpipのインストールが必要でその解説もしてます。
-
PythonでMySQLへの接続ライブラリMySQL-pythonの簡単インストール方法
PythonはMySQLに接続するライブラリは別途インストールが必要。なのでMySQL-pythonライブラリのインストール方法とサンプルスクリプトで動作検証までを解説。
-
Gitはフォルダ自体を管理対象にはできない。空のフォルダを設定する手順
Gitはフォルダだけを管理対象にすることはできない。そのため空の.gitkeepファイルを作成し管理対象にすることで、それが入っているフォルダも管理対象にする、と言う手順で管理を行う。
-
Selenium WebDriver、Pythonをインストールし Chromeの自動操作の環境構築手順のまとめ
Selenium WebDriverを使ってChromeを自動操作する環境を構築する手順のまとめ。使用するPythonのインストールから、サンプルスクリプトの動作確認までを詳細解説。
-
FTPでダウンロード時にファイルが重複するため上書きしますか?と表示される問題
FTPでファイルをダウンロードする際に「ファイルが重複しています。上書きしますか?」というメッセージが出る場合がありますが、これの原因と対策、解決策の記事です。