エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


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に下記の記述を追加します。
 

 
 

「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行目は、下記のように表現することもできます。
 

 
 

「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.」ありに統一する場合

 

「www.」なしに統一する場合

 
 


 

「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のリダイレクト設定は以下のようになります。
 

 
3行目で「index.html」を条件にして「index.html」を表示しないようにする設定になっています。
「index.html」を「index.php」に変更することもできます。
 
ただし、「index.html」と「index.php」の両方の対処をしたい場合は下記のようになります。(2通りの記述の方法があります。)
 

 
※「RewriteCond」は条件を記述するところですが、「[OR]」を指定しない場合は「[AND]」が指定されたものとみなされますので、条件に合致しなくなりますので注意が必要です。
 
 

サブフォルダがサブドメインの場合(エックスサーバ)

 
エックスサーバのサーバ設定では、サブドメインのドキュメントルートは、ドメインフォルダの中にサブフォルダとして設定されます。
 
そのため、下記の 2つの URLが同じページを見ることになります。
 http://blog.example.com
 http://example.com/blog
 
エックスサーバなど一部の共有サーバの場合は、サーバの仕様上サブフォルダとサブドメインが同じ場所となりますので、そのままにしておくとこれも重複コンテンツとなってしまいます。
そのため、サブフォルダ形式ではアクセスできないように制限を行います。(ロリポップサーバなどは全く関係ない話ですが。)
 
そのほかの設定と同じく、.htaccessに下記の情報を設定します。
 

 
 

重複コンテンツに対する正確な理解

 
重複コンテンツを作るとペナルティを受ける、と考えている方は多いのですが、正確にはマイナスのペナルティーを受けるわけではありません。
 
 
例えば、先に説明したとおり、下記のページは同じページが表示されます。
 http://s-giken.net/index.php
 http://s-giken.net
 
これに対して、Googleがどちらかのページにペナルティーを与えるということはありません。
 
ですが、これらの重複コンテンツに限った話ではないのですが、同じような情報が掲載されているページが複数あった場合、Googleは、検索結果の一覧には「一番重要な情報が掲載されている」と判断したページのみを表示しようとします。
 
そのため、重複コンテンツのページは、いずれか 1ページのみ表示がされることになります。
 
「どちらかが表示されるならいいじゃないか」と思うかもしれませんが、同じ内容のページが複数ある場合、Googleの評価もアクセスも複数のページに分散されるため、トータルで見ると検索結果の上位には出てきにくくなる、ということにつながるわけです。
 
分かりやすく数値で表現するなら、正しい処理(正規化)をしている場合は、1ページだけとなりますので、100点の 1ページが存在していると判断されます。
ですが、重複ページが存在すると、50点のページが 2ページ存在していると判断されます。
 
そうなると、100点のページは検索にヒットする可能性がありますが、50点のページではその他のサイトのページの方がポイントが高くなりますので、そもそもどちらも表示されなくなる、ということにつながるわけです。
 
なので、重複コンテンツにつながる事象は排除し、このサイトではこの URLの表現が唯一のものです、ということを明確にすべきなのです。
 
そして、その作業のことを Googleは「正規化」と呼んでいて、サイトの管理者は対応すべきものとして案内しています。

 - プログラミング・Web関連技術

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

mod_pagespeedカスタマイズで高速化を詳細解説・Google謹製

mod_pagespeedをデフォルトのまま使っていませんか?mod_pagespeedはデフォルトのままでも速い!でも仕組みを理解し設定し直せばより速くなる!

CentOS環境に ntpdをインストールして自動的に時刻を取得する設定にする
CentOS環境に ntpdをインストールして自動的に時刻を取得して合わせる設定にする

VirtualBoxに構築した CentOSの環境の時計がずれているとき、ntpdをインストールし、時計を合わせる方法を解説。NTPサーバを指定する方法や ntpdを自動起動する設定も解説。

Apacheの起動しているかの確認方法と起動、再起動、終了のコマンド
Apacheの起動しているかの確認方法と起動、再起動、終了のコマンド

Apacheが起動しているかを確認する方法の解説に加え、Apacheの起動、停止、再起動のコマンドを解説。再起動のコマンドには restart、condrestart、reload、gracefulがあり、違いを解説。

Selenium WebDriver、Pythonをインストールし Chromeの自動操作の環境構築手順のまとめ

Selenium WebDriverを使ってChromeを自動操作する環境を構築する手順のまとめ。使用するPythonのインストールから、サンプルスクリプトの動作確認までを詳細解説。

PythonでURLの有無、存在をチェックするスクリプト

PythonでURLが存在するか否かのチェックスクリプト。ライブラリ「urllib2」を使い、指定のURLにアクセスしそのレスポンスコードを判別するという仕組み。

mod_pagespeedでWebサイトを超簡単高速化・Google謹製の最終兵器

Webサイトの表示スピード高速化の最終兵器、Google謹製mod_pagespeedの解説です。レンタルサーバではX-Serverでしか利用できませんが、ワンクリックで高速化します。

直リンクとは何か?直リンクとディープリンクの違いと著作権問題

直リンクは著作権違反なのか?議論の前にまず「直リンク」の意味を正しく理解しよう。直リンクは他のサイトの画像を読み込む、ディープリンクなど多様な意味がある。

XSERVERにCakePHP3をインストール。コマンドラインのPHPのバージョンを変更する方法で解決

XSERVERにCakePHP3をインストールするときに問題となるのはサーバーパネルとSSH接続の時とで認識されるPHPのバージョンの違いがあるため。その解消方法を解説する。

Gitで基本的なデプロイ(push、pullで本番公開)環境を作る手順解説
Gitで基本的なデプロイ(push、pullで本番公開)環境を作る手順解説

開発進行中の環境、公開中の環境にGitを導入する。その基本的な手続きを解説。Gitの導入、ローカルリポジトリを作成。リモートリポジトリを利用し、本番環境にデプロイする手続きを解説。

Selenium WebDriverでFirefoxをプライベートウィンドウ/Chromeをシークレットモードで起動する方法・言語はpython

Seleniumでは初期状態でブラウザを起動する   Seleniumでブラウザ …