リダイレクトの設定方法

リダイレクトの種類

リダイレクトとは、アクセスしてきたユーザーを自動的に別ページへと転送する処理のことをいいます。
サイト移転時に旧サイトから新サイトへ自動で飛ばされた、といった経験をする方も多いのではないでしょうか?
あの「自動で飛ばされる」のがリダイレクトです。

リダイレクトには大きく分けると301リダイレクト302リダイレクトがあります。

一般的に使われる回数も多く、SEO的にも重要な意味を持つこの2つのリダイレクト。
使い方を間違えると検索順位にも大きな影響を及ぼす危険性も…

今回はそれぞれのリダイレクトが持つ意味の違いと使い分け方、実際にリダイレクトさせる方法についてご紹介していきます。

 

301リダイレクトと302リダイレクトの違い

 

方法 301リダイレクト 302リダイレクト
意味 恒久的に転送 一時的に転送
用途 ・サイト移転時
・URLの正規化
・スマホページ転送
・メンテナンス中画面への転送
インデックス リダイレクト先 リダイレクト元
PageRank 渡す 渡す

 

一般的に多く使われるのが301リダイレクトです。URLの正規化やサイト移転時などですね。

302は一時的なリダイレクトなため、短期間だけのリダイレクト(サイト改装時に表示するようなメンテナンス画面へのリダイレクトなど)でインデックスするURLを変更したくない場合に使われます。

また、GoogleはUA(ユーザーエージェント)で判別して振り分けるスマホサイトへのリダイレクトには302を推奨しています。
基本的にはこの2パターン以外の場合は301を使うと考えて問題ありません。

以前から302ではページランクを渡さないと言われていましたが、2015年10月頃にGoogleのジョン・ミューラー氏が「301であっても302であってもPageRankを渡す」と発言していました。

違いがあるのはページランクを渡すかどうかではなく、リダイレクト元とリダイレクト先のどちらのURLをインデックスさせるか、という点です。
301でリダイレクトすべき時に302を使ってしまうとリダイレクト先がいつまでたってもインデックスされない!といった問題が起こりかねません。

リダイレクトを使い分ける際には充分に注意してください。

 

リダイレクトの設定方法

いくつかあるリダイレクトの設定方法のうち、使われることも多い.htaccessとHTMLを利用したリダイレクト設定の方法をご紹介します。

.htaccessでのリダイレクト

リダイレクト元サーバーのルートディレクトリ直下に.htaccessファイルを置くことで、サイト全体を一括でリダイレクトさせることが可能です。

.htaccessはリダイレクト以外にもアクセス制限やエラーページのカスタマイズなどあらゆる機能を実現することができますが、設置できる環境がないと使うことはできません。
レンタルサーバーでは基本的に利用可能なことがほとんどですが、無料のホームページスペースなどは使えないことがあります。
事前に利用可能な環境であるかどうか確認しましょう。

 

.htaccessへの記載方法

・ページ単位のリダイレクト

old.htmlからnew.htmlへリダイレクト

RewriteEngine on
RewriteRule ^old\.html$ http://www.example/new.html [R=301,L]

 

・ディレクトリ単位のリダイレクト

/old/ディレクトリから/new/ディレクトリへリダイレクト
※ディレクトリ以下のファイル名も引き継がれます。(/old/page.htmlの場合は/new/page.htmlへリダイレクト)

RewriteEngine on
RewriteRule ^old/(.*)$http://www.example /new/$1 [R=301,L]

 

・ドメイン移転

http://www.old.com/からhttp://www.new.com/へリダイレクト

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.old\.com$
RewriteRule ^(.*)$ http://www.new.com/$1 [R=301,L]

 

・wwwの統一

wwwありwwwなしへリダイレクト

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

 

・index.htmlの統一

index.htmlありindex.htmlなしへリダイレクト

RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://www.example.com/$1 [R=301,L]

※全て301リダイレクトを記載しています。302リダイレクトの場合は[R=301,L]の部分を[R=302,L]にして下さい。

.htaccessはメモ帳などのテキストエディタで作成が可能です。
リダイレクトに関する記述を行ったら、ファイル名を「.htaccess」にして保存して下さい。
この時拡張子は必要ありません。拡張子なしで保存できない場合はサーバーにアップ後にファイル名を「.htaccess」に変更して下さい。

 

あとは保存した.htaccessをサーバーにアップすれば設置完了です!

.htaccessの有効範囲は設置したディレクトリ以下全てになります。
サイト全体に適用させる場合はルートドメイン直下に、特定のディレクトリのみに適用させたい場合は適用させたいディレクトリ直下に設置して下さい。

 

meta refreshタグを使ったリダイレクト

HTMLソースの<head>内に記述することで任意のURLにリダイレクトさせることができます。
HTMLに記述するため.htaccessのように必要な環境などはありません。
.htaccessが使えない際にはこの方法でリダイレクトさせることもあります。

 

meta refreshタグの使い方

リダイレクトさせたいページの<head>内に以下の記述をするだけです。
・http://new.com/へリダイレクト

<meta name=”refresh” content=”3;http://new.com/”>

content=”3の部分はリダイレクトまでの秒数です。
上記の場合は3秒後に指定先のページへリダイレクトされます。

リダイレクトを0秒後に指定することで301と同等の扱いになる、といったことも言われていますが、必ずしも301と同じ動きをするわけではありません。

Googleもmeta refresh形式のリダイレクトをサイト移転に使うことを推奨していないため、どうしても方法がないといった場合以外には通常の301リダイレクトを使用しましょう。

 

リダイレクトの設定方法
title属性とalt属性について
パラメータ付URLの対処法