「301リダイレクト」とは・・・サイトの移設(ドメインの変更)や、ページのURLを変更する場合に、変更前のURLから変更後のURLへ、ユーザーと検索エンジンを、誘導(転送)するための仕組みになります。
※「ドメイン」についてはこちらで解説しています→ドメインとは?2分で「ドメイン」を理解するためのまとめ記事
ユーザーを対象に考えたら、分かりやすいと思います。
例えば、サイトを別のドメインへ移設した場合、この場合でも移設前のサイトは、検索エンジンで検索したら普通に表示されます(移設前のサイトが、検索エンジンに登録されている。かつ移設前のサイトを削除していない場合)
なので、ユーザーは検索エンジンを介して普通に移設前のサイトへアクセスできるわけですね。
単に公開されているというだけで、現在は運営されていないサイトだとしても、、、
このままの状態だと、ユーザーに対して不親切ですし、サイトの運営側もせっかくユーザーが訪れてくれるなら、新しい方のサイト(ドメイン)へ訪問してほしいですよね。
このような時に、「301リダイレクト」を利用するのです。
そうすれば、移設前のサイトへ訪れた訪問者を、新しいサイトへ誘導(転送)する事ができますから。
これが、基本的な「301リダイレクト」の役割になります。
また、検索エンジンに対しても「301リダイレクト」は重要な役割を持ちます。
今回の記事では、その役割についてと、実際に「301リダイレクト」を設定する手順について解説していきます。
以下、目次になります。
- 301リダイレクトの必要性
- 301リダイレクトの設定手順
301リダイレクトの必要性
上述している通り、「301リダイレクト」は、サイトを移設した時や、ページのURLを変更した時などに必要となる仕組みで、ちゃんとユーザーを「新しいサイト(URL)」へ誘導(転送)するのが、役割の1つとなります。
そして、もう一つ重要なのが「検索エンジン」に対しての役割です。
例えば、移設前のサイトの「A」というページが、検索エンジンで上位に表示されていたとします。
そして、新しいサイトでも、この「A」ページの代わりとなるページ(「B」ページとします)を作成し公開しました。
コンテンツ内容は全く一緒なのにも関わらず、新しい方の「B」ページは全く上位に表示されません。
そりゃそうですよね、検索エンジンは「Aページ」と「Bページ」を全く別物として扱いますし、「評価」も全く違います。
※ここでいう「評価」とは、被リンクやPageRank、ドメインの運用年数等の、SEO的に重要な要素への評価の事です。
なので、「Aページ」は他のサイトからの被リンクがたくさん付いていて、ページランク(PageRank)が高かったとしても、新たに作られた「B」ページは、(検索エンジンから)別物として扱われるので、これらの評価は消失しているという事です。
※「SEO」については、こちらで詳しく解説しています→SEO対策とは
ですが、これらの評価を受け継ぐようにしてくれるのが「301リダイレクト」になるのです。
なので、移設前のサイトが、検索エンジンからの評価が高ければ高いほど、「301リダイレクト」は必須となります。
また、サイト内に重複ページがある場合も、この「301リダイレクト」は有用です。
例えば、下記のように「WWWのあり・なし」ドメインがあって、コンテンツは全く一緒だったとします。
・http://www.viral-community.com/
・https://viral-community.com/
この場合、検索エンジンは「URL」が違うので、別物として扱います。
なので、もちろんSEO的に重要な要素(被リンク等)も、それぞれで独立したものとして扱われます。
要は、同じコンテンツなのに、検索エンジンからの評価は2つに分散されるわけですね。
評価が分散されるということは、それだけ上位表示されにくい状態という事です。
なので、SEO的にいえば非常に損をしている状態といえる訳ですね。
ですが、「301リダイレクト」を利用すれば、この状態も改善してくれます。
それは、どちらか一方を「メインのURL」として、メインじゃないURLから、メインのURLへ「301リダイレクト」をすれば、検索エンジンからの評価は、「メインのURL」へ統一化されます。
これで、サイト内に重複しているコンテンツがあり、SEO的に不利な状態になっていたとしても、改善する事ができます。
以上が、「301リダイレクト」の役割になります。
ですが、利用の際に何点か注意点があります(下記)
-
「302リダイレクト(一時的な転送)は、基本的に使わない」
「302リダイレクト」も、301リダイレクトと全く同じように利用することができますが、検索エンジンの解釈が下記のように異なっています。
・「302リダイレクト」:一時的な転送
・「301リダイレクト」:恒久的な転送なので、一時的に転送する場合以外は、「301リダイレクト」を利用するにようにしましょう。
-
「301リダイレクト」を利用しても、イイね!やTweet等のソーシャルメディアでのシェアカウントはリセットされる
上述で、検索エンジンからの評価(被リンクやPageRank、ドメインの運用年数)は引き継がれる事を解説しましたが、ソーシャルメディアでのシェアカウントについては、引き継がれないので注意してください。
以上です。
301リダイレクトの設定手順
当章では、具体的に「301リダイレクト」の設定手順について解説していきます。
まず、設定するにあたって、いくつかの前提条件があります(下記)
- Webサーバーに「Apache(アパッチ)」を利用している
- 「.htaccess」が利用できる環境である
- 「mod_Rewrite」という機能を利用できるWebサーバー(Apache)である(こちらは、必須条件ではありません)
※これらの条件は、「.htaccess」に301リダイレクトの設定をする場合です。「PHP」による301リダイレクトの設定の際は、これらの条件は必要ありません(後述しています)
上記に挙げている条件(一つ目と二つ目は必須)を満たせてないと、「.htaccess」による301リダイレクトを設定できませんので、注意してください。
では、設定手順に入っていきましょう(以下、目次になります)
- 「mod_Rewrite」が利用できる場合の設定手順
- 「mod_Rewrite」が利用できない場合の設定手順
- 「PHP」による301リダイレクトの設定手順
「mod_Rewrite」が利用できる場合の設定手順
まず、「●●●.htaccess」という名前のファイルを作成してください(下図例)
次に、そのファイルを「メモ帳」などのエディタで開いてください(下図例)
ファイルをエディタで開いたら、次は「301リダイレクトの設定」を記述していきます。
以下に、シチュエーション(状況)や、用途(やりたい事)ごとの記述例をまとめていますので、こちらを参考に記述していってください。
-
「ページ(個別)を移転した場合」
RewriteEngine on
RewriteRule ^old.html$ http://www.example.com/new.html [R=301,L]上記は、「old.html」にアクセスしたら、「http://www.example.com/new.html」へ301リダイレクトする設定です。
※上記は、「.htaccessファイル」が、「old.html」と同じディレクトリ内にある事が前提です。
-
「ディレクトリを移転した場合」
RewriteEngine on
RewriteRule ^old(.*)$ /new$1 [R=301,L]上記は、「old ディレクトリ」にアクセスがあった場合、「new ディレクトリ」へ「301リダイレクト」する設定です。
※「old ディレクトリ」と「new ディレクトリ」の下層ページURLは同じである事が前提です。
また、「.htaccessファイル」が、「old ディレクトリ」と同じ階層にある事、かつ「new」ディレクトリが、ルートディレクトリ内にある事が前提です。 -
「WWWあり・なしのドメインを、どちらかに統一したい場合」
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(example\.com)(:80)? [NC]
RewriteRule ^(.*) http://www.example.com/$1 [R=301,L]上記は、「example.com」ドメインにアクセスしたら、「www.example.com」ドメインへ「301リダイレクト」する設定です。
※「wwwあり・なしドメイン」それぞれの下層ページURLは、同じである事が前提です。
また、「.htaccessファイル」が、(ドメインの)ルートディレクトリ内にある事が前提です。 -
「index.htmlあり・なしの「トップページURL」を、どちらかに統一したい場合」
RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://example.com/$1 [R=301,L]上記は、「http://example.com/index.html」にアクセスしたら、「http://example.com/」へ「301リダイレクト」する設定です。
※「.htaccessファイル」が、「index.html」と同じ階層(通常はルートディレクトリ内)にある事が前提です。
-
「ドメインを移転する、かつ下層ページのURLは変わらない場合」
RewriteCond %{HTTP_HOST} ^(old\.com)(:80)? [NC]
RewriteRule ^(.*) http://new.com/$1 [R=301,L]上記は、「old.com」ドメインにアクセスしたら、「new.com」ドメインへ「301リダイレクト」する設定です。
※「.htaccessファイル」が、(「old.com」ドメインの)ルートディレクトリ内にある事が前提です。
-
「一部のディレクトリやページに関しては、転送設定をしたくない場合」
RewriteCond ^!old-url/old-dir.*
RewriteRule ^old-url.* http://new-url.com/ [R=301,L]上記は、「old-url」ドメイン内の「old-dir」ディレクトリ以下にアクセスした場合は、転送はされず、それ以外のディレクトリ(又はファイル)にアクセスした場合は、「http://new-url.com/」へ「301リダイレクト」する設定です。
※「.htaccessファイル」が、(「old-url」ドメインの)ルートディレクトリ内にある事が前提です。
以上です。
※上記、記述例に記載している内容の意味については、こちらで詳しく解説しています→Mod_Rewriteを使って、リダイレクト設定する手順をまとめてみた
上記記述例を参考に、「●●●.htaccess」ファイルへ記載をおこなったら、保存をして、「●●●.htaccess」ファイルを配置すべき場所(上記参考)へ、FFFTPなどの「FTPツール」を利用してアップロードしてください(下図参考)
アップロードできたら、「●●●.htaccess」の ”●●●”を消して、ファイル名を「.htaccess」に変更してください(下図参考)
以上です。
これで、設定は完了なので、ちゃんと「301リダイレクト」されているかの確認を行ってください。
次は、「mod_Rewrite」を利用しない場合の設定手順の解説です。
「mod_Rewrite」が利用できない場合の設定手順
上述している「mod_Rewrite」が利用できる場合の設定手順と、途中までは同じです。
具体的には、「●●●.htaccess」を作成して、エディタで開くとこまでは一緒です。
違うのは、「●●●.htaccess」への記載内容です。
以下に、シチュエーション(状況)や、用途(やりたい事)ごとの記述例をまとめていますので、こちらを参考に記述していってください。
-
「ページ(個別)を移転した場合」
Redirect 301 /doc/old.html http://www.example.com/doc/new.html上記は、「old.html」にアクセスしたら、「http://www.example.com/doc/new.html」へ301リダイレクトする設定です。
※「.htaccessファイル」が、(サイトの)ルートディレクトリ内にある事が前提です。
-
「ディレクトリを移転した場合」
Redirect 301 /shop/ http://example.com/shopping/上記は、「shop ディレクトリ」にアクセスしたら、「shopping ディレクトリ」へ「301リダイレクト」する設定です。
※「shop ディレクトリ」と「shopping ディレクトリ」の下層ページURLは同じである事と、「.htaccessファイル」が、ルートディレクトリにある事が前提です。
-
「ドメインを移転する、かつ下層ページのURLは変わらない場合」
Redirect 301 / http://www.new.com/上記は、移転前のドメイン(仮に「www.old.com」とする)にアクセスしたら、「www.new.com/」ドメインへ「301リダイレクト」する設定です。
※「.htaccessファイル」が、(「www.old.com」ドメインの)ルートディレクトリ内にある事が前提です。
-
「WWWあり・なしのドメインを、どちらかに統一したい場合」
Redirect 301 / http://example.com/上記は、「www.example.com」ドメインにアクセスしたら、「example.com」ドメインへ「301リダイレクト」する設定です。
※「wwwあり・なしドメイン」のルートディレクトリが同じ場所。かつ、それぞれの下層ページURLは、同じである事が前提です。
また、「.htaccessファイル」が、(ドメインの)ルートディレクトリ内にある事が前提です。
以上です。
「●●●.htaccess」ファイルへの記載が終わった後の手順は、上述している「mod_Rewrite が利用できる場合の設定手順」と同じになります(見ておいてください)
設定が完了したら、ちゃんと「301リダイレクト」されているかの確認をしておきましょう。
「PHP」による301リダイレクトの設定手順
当項目では、「.htaccess」を利用せずに、「PHP」を利用して301リダイレクトをおこなう手順を解説していきます。
条件としては、「PHP」が利用できる環境であることと、転送元のページが「PHPファイル」で構成されている必要があります。
この条件が満たされていれば、あとの手順は簡単で、該当の「PHPファイル」に下記を記述するだけです。
<?
Header( “HTTP/1.1 301 Moved Permanently” );
Header( “Location: http://example.com/new.html” );
?>
これで、上記を記述しているページにアクセスがあった場合、「http://example.com/new.html」へ301リダイレクトされます。
以上です。
まとめ
今回の記事では、「301リダイレクト」について、必要性と設定手順を解説してきました。
ドメインの移転や、サイト内に重複コンテンツがある場合、基本的には「301リダイレクト」を使う事を推奨します。
ですが、「301リダイレクト」が使えない場合は、代替の手段もいくつかあります。
代替手段としては、Googleウェブマスターツールや、canonicalリンクの利用がオススメです(Googleウェブマスターツールに関しては、こちらで解説しています→Google対策に必須!ウェブマスターツール(WebMasterTool)へのサイト登録と基本的な使い方)
詳しくは、こちらで解説しています→正規化とは?サイトのページURLを正規化する必要性と方法についてまとめてみた