サイトの移転、htmlからphpへの拡張子変更など、ページURLの変更はサイトを運営しているとどうしても対応しなければいけない時があります。そんな時、htaccessが使えれば下記記述のみで対応が可能です。
※旧ページから http://labo.520328.jp/ にリダイレクトさせる場合の例です
htaccessでリダイレクト
redirect 301 /contents/old.html http://labo.520328.jp/
ただし、サーバーの仕様によりhtaccessが利用できない時もあります。そんな時、PHPが利用できれば、下記のように書く事で同じようにリダイレクト処理を行えます。
PHPでリダイレクト
<?php header( "HTTP/1.1 301 Moved Permanently" ); header( "Location: http://labo.520328.jp/" ); ?>
そんな事しないでHTMLのmetaタグに下記の通り記述すれば同じ動作になるのでは?と思う人もいるかと思います。
HTML(metaタグ)でリダイレクト
<meta http-equiv="refresh" content="0 ; URL=http://labo.520328.jp/">
これでも見た目は同じなのですが、「301リダイレクト」と「302リダイレクト」の違いがあります。
「301リダイレクト」と「302リダイレクト」の違い
「301リダイレクト」は「今後ずっと新しいURLで運営しますよ」という意味のリダイレクトで、上記でいうhtaccessとPHPでの処理が該当します。今回のように、何らか理由があってURLが変更となる場合は、今後新しいURLを使い続ける事になるので、301リダイレクトが正しい処理といえます。
「302リダイレクト」は「一時的にURLを変更するが、また旧URLに戻す」という用途のリダイレクトで、例えばサイトメンテナンス中だけ「メンテナンス中です」というページにリダイレクトさせるが、サイトメンテナンスが終了したら元のURLに戻す、という時に利用します。これはmetaタグ記述による処理が該当します。
以上、PHPによるリダイレクト処理と、リダイレクト「301リダイレクト」と「302リダイレクト」の違いについてでした。