HTTPリダイレクトとは

HTTPのリダイレクトは、ブラウザなどのクライアント側が要求したリソースが、どこか別の場所に存在することをクライアント側に知らせるために使用されるステータスコードです。

リダイレクトのステータスコードを受けたクライアントのブラウザは、Location:ヘッダーで指定された新しいURLにリダイレクトをされます。

HTTPリダイレクトコードの種類

HTTPのリダイレクトには301、302、307などのリダイレクトコードがあります。

HTTPヘッダにあるHTTPステータスコードにてリダイレクトの種類を伝え、Location:ヘッダで移動先を伝える。種類には301 Moved Permanently(恒久的な移転)や302 Found(発見)などがある。Webサーバの設定ファイル(Apacheの場合、httpd.confファイルや.htaccessファイル)や、CGIなどで指定できる。

リダイレクト(HTTP)- Wiki

リダイレクトコードを簡単に説明をすると以下となります。

リダイレクトの種類リダイレクトの簡単な説明
301リダイレクト恒久的なリダイレクト
302リダイレクト一時的なリダイレクト
307リダイレクト一時的なリダイレクト
リダイレクト先にはリダイレクト元(GET/POST)も引き継ぐ

ステータスコード301は恒久的な移転(Moved Permanently)となり、302(307)はTemporary Redirectということで一時的な移転として扱われます

クリックランキングプログラムからの転送

dtn.jpではカテゴリ登録サイト向けにクリックランキング、アクセスランキングを実施しています。

ランキングカウント用PHPでは、$_GET、$_POSTのデータからリンクIDを抜き出し、ランキングカウントテーブルにトランデータを反映させた後、登録サイトのURLにリダイレクトをしておりました。

ところが、ステータスコードを指定せずにリダイレクトをすると、302(307)の一時的なリダイレクトと認識されてしまうため、SEO的にはあまり良くないことになってしまいます。

そこで、ランキングデータ集計プログラム後のリダイレクトをする際に、301ステータスコードを入れるようにしました

$LINK = "https://www.yahoo.co.jp/";
header('Location: ' . $LINK, true, 301);

まとめ

新しいランキングプログラムは、301リダイレクトが有効となったので、ウェブサイト転送時にもリンク価値を保護することができました。

お持ちのサイトでリダイレクトを設定されている方は、リダイレクト時のステータスコードにも是非ご注意下さい。