2006年12月08日

301 Moved Permanentlyでウェブサイトを転送する方法

ウェブサイトのアドレス(URL)を変更すると、古いサイトから新しいサイトへ転送(リダイレクト)する必要があります。人間に対してはURLが変わったことを表示して移動を促せばいいわけですが、検索ロボットには正しく認識してもらわないと、古いサイトと新しいサイトがどちらも検索結果に表示されたり、検索エンジンの評価が低くなったりしてしまいます。

検索ロボットがどうやって転送されているかを判断するかというとHTTPレスポンスヘッダのHTTP Status Codeを見ます。転送用のStatus Codeには大きく二つあり、

  • 301 Moved Permanently
  • 302 Found (Moved Temporarily)

があります。どちらを使用すべきか、ということですが、古いサイトから新しいサイトへ転送したいなら301 Moved Permanentlyの方です。302にしておくと、一時的なアドレスとみなされてしまうからです。301 Moved Permanentlyで転送するには大きく2つの方法があります。

■ .htaccess(httpd.conf)に301 Moved Permanentlyを設定する方法
Redirectを使用する

Redirect permanent / http://www.example.com/

mod_rewriteを使用する
RewriteEngine on
RewriteRule ^/(.*)$ http://www.example.com/$1 [R=301,L]

■ 各種プログラム言語において設定する方法
PerlでHTTP 301 Redirect

#!/usr/local/bin/perl
use strict;
print "Status: 301 Moved Permanantly\n";
print "Location: http://www.example/com/\n\n"
exit;

PHPでHTTP 301 Redirect
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.example.com/");
exit();
?>

さて、.htaccessもサーバーサイドスクリプトも使用できない場合はどうすればいいのでしょうか。HTMLだけで転送させようと思うと、メタリフレッシュをするかJavascriptで転送するかしかありません。Javascriptは検索ロボットは読み込まないので、メタリフレッシュで

<meta http-equiv="refresh" content="0;url=http://www.example.com/">

とするしかないわけですが、これだと301 Moved Permanentlyで送ることはできません。この場合、通常は200 OKを返すと思います。

ここで重要になるのが、検索エンジンがこの転送をどのように解釈するかです。一般的に、リダイレクト時間が0または1の時は301 Moved Permanentlyとして扱われ、2以上の時は302 Found (Moved Temporarily)と判断されると言われています。この件についてはYahooのヘルプに書かれています。
Yahoo! ヘルプ - サイト管理者向け

ウェブサイトを移転した時に、古いサイトから新しいサイトへ301 Moved Permanentlyで転送するのが一番ですが、できない場合でもメタリフレッシュで転送するようにしたほうが、何もしないよりはましでしょう。

参考ウェブサイト

trackbacks

trackbackURL:

www有り・www無し・両刀使いについて from サーログ

モバイル用にwww無しでもアクセス可能なように、Apacheのhttpd.con...

comments

comment form

(たんきゅうラボ にはじめてコメントされる場合、不適切なコメントを防止するため、掲載前に管理者が内容を確認しています。適切なコメントと判断した場合コメントは直ちに表示されますので、再度コメントを投稿する必要はありません。)

comment form

Search


Category Archives