[対象: 上級]
検索エンジンの評価を引き継ぐことなしに、別のURLへリダイレクトする方法をこの記事では説明します。
たとえば、ペンギンアップデートや不自然リンクの手動対策の影響を受けてどうしても問題となるリンクを削除しきれず、さらにリンクの否認ツールを使っても芳しい結果が出なかった場合、最終的にはそのドメイン名を捨てなければならないことがあります。
そして新たに取得したドメイン名のもとで、内容が同じサイトを新規にスタートします。
このとき、元のドメイン名のサイト(ペナルティを受けたサイト)に訪問したユーザーを新サイトに連れて行く必要があります。
トップページに「サイトを移転しました」の告知とともに、新サイトのURLを載せておくやり方があります。
でもできればユーザーに意識させることなく自動で転送したいところです。
ところが301リダイレクトは通常は良い評価も悪い評価も引き継ぎます。
タイムラグが発生することはあっても、最後にはペナルティも引き継ぐのがたいていのパターンです。
検索エンジンからの評価を引き継ぐことなしに、ユーザーだけをリダイレクトする方法が望まれます。
WebmasterWorldでそんなディスカッションがあったので紹介します。
ブロックした中間ページ経由でリダイレクト
方法は、robots.txtでクロールをブロックしたページを経由して、ペナルティを解除できない古いサイトのURLから新ドメイン名のサイトの対応するURLへリダイレクトすることです。
考え方としては、Googleのリンクプログラムのヘルプで提案されているPageRankを転送しない広告リンクの設置方法に相当します。
なお、広告購入者に PageRank を転送しない PPC(クリック課金型)広告リンクは、Google のガイドラインへの違反にはあたりません。次のような方法で、PageRank が転送されないようにすることができます:
- rel=”nofollow” 属性を <a> タグに追加する
- robots.txt ファイルによって検索エンジンからブロックされる中間ページにリンクをリダイレクトする
2つ目ですね。
具体的な設定
次のような流れになります。
- ブラウザ(人間のユーザー)が、ペナルティを受けた古いドメイン名のサイトのURLにアクセスする。
- .htaccessファイルの設定で、同じドメイン名のサイトに置いたリダイレクト用のスクリプトファイルにリダイレクトし、たとえば「
RedirectScript.php?requestURL=requested URL
」のように処理させる。 - ブラウザは、「
RedirectScript.php?requestURL=requested URL
」を再リクエストする。 - 「
RedirectScript.php
」が、新ドメインの対応するURLへのリダイレクトを実行する。
ここで、中間ページとして利用する「RedirectScript.php
」をrobots.txtでブロックしておきます。
すると、3番目の過程にある、このスクリプトファイル(ページ)へはGooglebotはアクセスしません。
結果として新URLへのリダイレクトを認識しません。
しかしながら、ユーザーは依然として新URLへ自動で転送されます。
ユーザーを自動でリダイレクトしつつも検索エンジンはリダイレクトしないという処理が実現できます。
各ファイルに記述するコードのサンプルを以下に載せます。
robots.txt
User-Agent: * Disallow: /blocked-page.php
.htaccess
RewriteEngine on RewriteRule !^(:?robots\.txt|blocked-page\.php)$ http://www.example.com/blocked-page.php?goto=%{REQUEST_URI} [R=301,L]
blocked-page.php
【UPDATE】コードに間違いがあったようなので修正しました。
<?php if(filter_var('http://www.new-site.com'.$_GET['goto'],FILTER_VALIDATE_URL)!==FALSE) { header('Location: http://www.new-site.com'.$_GET['goto'],TRUE,301); exit; } else { echo '申し訳ございませんが、そのページは存在しません。URLを確認して下さい。'; exit; } ?>
なお元のURLにクエリパラメータが付いているときは修正が必要かもしれないとのことです。
その他も含めて、実際に利用するときは、開発に詳しくなければ詳しい人に内容をよく見てもらってから実装してください。
ようはrobots.txtでブロックした中間ページを挟んでリダイレクトすればいいので、別の実装方法もあるはずです。
難点は、リダイレクトを2回繰り替えすので、その分遅延が発生することです。
とはいえ、背に腹は代えられませんね。
ペナルティを解除させることができずに今のドメインでの運用を諦めるしか選択肢が見つからず、訪問ユーザーの手をわずらわせることなく新規サイトへ誘導したいときに使うことを検討したい方法です。
ちなみに、「これはクローキングでは?」と考える人が出てくるかもしれませんが、クローキングではありません。
クローキングは、ユーザーと検索エンジンに同じURLで異なるコンテンツを返すことです。
またペナルティを引き継がずにリダイレクトと言っていますが、自然についた価値のある被リンクのようなまっとうな評価も当然引き継ぎません。
良い悪いにかかわらず、検索エンジンに対するすべての評価を断ち切って、ユーザーだけを転送する方法になります。