301リダイレクト とは?
サイトを引っ越したいけど今のサイトはページランクが付いているし検索順位も上位表示されているのでもったいない。
またいちから SEO 対策をしないといけないのかwwww、とお悩みの方、301リダイレクト がお勧めです。
301リダイレクト は、特定のURLへのアクセスを指定したURLに転送することが出来ます。
しかもページランクや検索結果に影響するデータを引き継いでくれます。
Google や Yahoo! もこのやり方を推奨していますので、スパムになることはありません。
301リダイレクト の効果
引越ではなかったのですが、私もこの 301リダイレクト を行い、効果を実証しています。
趣味で「食玩・ガチャポン・フィギュアコレクション」というサイトを公開しているのですが、どういう訳か突然 Google Yahoo! とも http://www.figure.kanaya440.com/ と http://www.kanaya440.com/figure/ の両方がインデックスされ、ミラーサイトのペナルティを受けてしまいました。
そこで 301リダイレクト を使い http://www.figure.kanaya440.com/ に転送するようにしました。
結果、現在では検索結果も http://www.figure.kanaya440.com/ に統一されました。
301リダイレクト の設定方法
.htaccess で使う方法
テキストエディタ(メモ帳等)に下記を記述し、.htaccess という名前で保存する(拡張子だけでファイル名なし)
.htaccess が既にある場合は、テキストエディタ(メモ帳等)で開いて下記を追記する。
このファイルをルートディレクトリ(トップページがあるフォルダ)に置いておけばOK
- redirect 301 /figure/ http://www.figure.kanaya440.com/
PHP で使う方法
下記コードを PHPページ、またはスクリプトに記述します。
- <?
- header( "HTTP/1.1 301 Moved Permanently" );
- header( "Status: 301 Moved Permanently" );
- header( "Location: http://www.figure.kanaya440.com/" );
- exit(0); // 任意(これを記述しておくと誤って出力されることを防げます)
- ?>
通常 header( "Location: http://www.figure.kanaya440.com/" ); のみ書きますが、その場合 302リダイレクトとなりますので注意して下さい。
ASP で使う方法
下記コードを ASPページ、またはスクリプトに記述します。
- <%@ Language=VBScript %>
- <%
- Response.Status="301 Moved Permanently"
- Response.AddHeader "Location", "http://www.figure.kanaya440.com/"
- %>
通常 Response.Redirect("http://www.figure.kanaya440.com/") と書きますが、その場合 302リダイレクトとなりますので注意して下さい。
ASP.NET で使う方法
下記コードを ASP.NETページ、またはスクリプトに記述します。
- <script runat="server"%>
- private void Page_Load(object sender, System.EventArgs e)
- {
- Response.Status = "301 Moved Permanently";
- Response.AddHeader("Location","http://www.figure.kanaya440.com/");
- }
- </script%>
Server.Transfer("http://www.figure.kanaya440.com/"); あるいは
Response.Redirect("http://www.figure.kanaya440.com/") と書くと 302リダイレクトとなりますので注意して下さい。
JSP/JAVA で使う方法
下記コードをページ、またはスクリプトに記述します。
- <%
- response.setStatus(301);
- response.setHeader( "Location", "http://www.new-url.com/" );
- response.setHeader( "Connection", "close" );
- %>
CGI/PERL で使う方法
- $q = new CGI;
- print $q->redirect(" http://www.new-url.com/ ");
ColdFusion で使う方法
- <cfheader statuscode="301" statustext="Moved permanently">
- <cfheader name="Location" value="http://www.new-url.com/">
301リダイレクト の確認
下記サイトで正しく 301リダイレクト されているか確認しましょう。
http://web-sniffer.net/
- 「HTTP(S)-URL」に 301リダイレクト 元の URL を入力します。
- 「Submit」ボタンをクリックします。
- 「HTTP Status Code: HTTP/1.1 301 Moved Permanently」と表示されていれば正しく 301リダイレクト されています。

※通常は 「HTTP Status Code: HTTP/1.1 200 OK」と表示されます。
※上記の「301」が「302」になっていると、通常の転送ですのでスパムになることがあるので気をつけて下さい。
追記:Yahoo! Inc.のリダイレクトに関するガイドライン
メタリフレッシュについて
<meta http-equiv=”refresh” content=…>を使ったリダイレクトでは、即時にリダイレクトするように設定している場合は301、リダイレクト開始まで一定の時間を設定している場合は302、として扱われるということです。
- <meta http-equiv="Refresh" content="0;URL=http://・・・>
- <meta http-equiv="Refresh" content="10;URL=http://・・・>
1行目は301リダイレクトになります。
2行目は302リダイレクトになります。
サイト管理者向けヘルプ
追記:www 付きと www なし いずれかの URL へ統一する
この場合も redirect 301 / http://kanaya440.com/ でなしに統一、
redirect 301 / http://www.kanaya440.com/ でありに統一出来るのですが、下記の方法もあります。
「www付き」で統一
- RewriteEngine on
- RewriteCond %{HTTP_HOST} ^(kanaya440\.jp)(:80)?
- RewriteRule ^(.*) http://www.kanaya440.com/$1 [R=301,L]
「wwwなし」で統一
- RewriteEngine on
- RewriteCond %{HTTP_HOST} ^(www\.kanaya440\.jp)(:80)?
- RewriteRule ^(.*) http://kanaya440.com/$1 [R=301,L]