【PHP】リダイレクトをする方法

公開日:
更新日:
カテゴリー: PHP

PHPでリダイレクトする方法を説明します。

if構文などで条件分岐させ、この条件の時はこっちのページに移動させる、、、などが可能になると思います。

301リダイレクト

301リダイレクトは、永続的なページの移転やURL変更のときに使います。

<?php 
header('Location: http://○○○.com/', true, 301);
exit();
?>

なお、ポイントは「exit」です。リダイレクト後すぐにPHP処理を終了させることで予期せぬエラーを防げます。

302リダイレクト

302リダイレクトは、一時的なページの移転やURL変更の時に使います。

上述の301リダイレクトとの違いは、永続的な場合は301リダイレクトを、一時的な場合は302リダイレクトを使います。

<?php 
header('Location: http://○○○.com/');
exit();
?>

なお、302リダイレクトは元のページが持つページランクやSEO的な要素をリダイレクト先のページに渡せませんので、永続的なリダイレクトの場合は301リダイレクトを使ってください。

そうすることで、検索結果の順位も引き継ぐことができます(話によると、ちょっと目減りするらしいですがほぼ移転元のパワーは移転先に引き継がれるようです。

303リダイレクト

301、302リダイレクト以外にも303リダイレクトもあります。

303リダイレクトは、永続的なリダイレクトでも一時的なリダイレクトでもなく、単純に一旦こっちに移動してくれ!というときに使用します。

<?php 
header('Location: http://○○○.com/', true, 303);
exit();
?>

303は「See Other(他を参照せよ)」という意味があり、リダイレクト先のURLに対してGETメソッドでアクセスします。

これの使いどころは、掲示板への投稿の後(フォームでのPOST送信の後)、掲示板の一覧ページにリダイレクトさせるときに使用します(リダイレクト先に同じデータをPOST送信しても意味がないため、303でGETに変更してあげる)。

(ちなみに、掲示板へのPOST送信での書き込みで、掲示板→処理→掲示板にしてしまうと、リロードで何度も書き込みができるようになってしまう場合があるそうなので、一旦一覧ページに303リダイレクトをかける・・・というのが基本らしいです。)

307リダイレクト

307リダイレクトは、一時的なリダイレクトで、302リダイレクトとほぼ同じです。

違いは、307リダイレクトは「使用したGETメソッド、POSTメソッドをそのまま使う」ことです。

そのため、リダイレクト元でGET送信やPOST送信を使用し、それをそのままリダイレクト先に渡したいときに307リダイレクトを使用します。

<?php 
header('Location: http://○○○.com/', true, 307);
exit();
?>

他の方法

サーバーでPHPを使えない場合は、「.htaccess」でのリダイレクトメタタグでのリダイレクトで対応すると良いです。

 

あわせて読んでほしい!

 

コメント

まだコメントはありません。

コメントフォーム
お名前
コメント