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を使用する
mod_rewriteを使用する
RewriteRule ^/(.*)$ http://www.example.com/$1 [R=301,L]
■ 各種プログラム言語において設定する方法
PerlでHTTP 301 Redirect
use strict;
print "Status: 301 Moved Permanantly\n";
print "Location: http://www.example/com/\n\n"
exit;
PHPでHTTP 301 Redirect
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.example.com/");
exit();
?>
さて、.htaccessもサーバーサイドスクリプトも使用できない場合はどうすればいいのでしょうか。HTMLだけで転送させようと思うと、メタリフレッシュをするかJavascriptで転送するかしかありません。Javascriptは検索ロボットは読み込まないので、メタリフレッシュで
とするしかないわけですが、これだと301 Moved Permanentlyで送ることはできません。この場合、通常は200 OKを返すと思います。
ここで重要になるのが、検索エンジンがこの転送をどのように解釈するかです。一般的に、リダイレクト時間が0または1の時は301 Moved Permanentlyとして扱われ、2以上の時は302 Found (Moved Temporarily)と判断されると言われています。この件についてはYahooのヘルプに書かれています。
Yahoo! ヘルプ - サイト管理者向け
ウェブサイトを移転した時に、古いサイトから新しいサイトへ301 Moved Permanentlyで転送するのが一番ですが、できない場合でもメタリフレッシュで転送するようにしたほうが、何もしないよりはましでしょう。
参考ウェブサイト- Permanent Redirect with HTTP 301 [英語]
- Different forms of redirects: permanent 301, temporary 302, javascript, meta-refresh [英語]
- View HTTP Request and Response Header [英語]
- Permalink
- by tankyu
- at 13:50
- in ウェブサイト ≫ Tips
- Comments (0)
- Trackbacks (1)

comments