最終更新日:
公開日:
レシピ
出力
リダイレクトする:header関数
別サイトやページの移動に便利なリダイレクトについて解説します。
この記事のポイント
- 他ページへのリダイレクトを設定する
- HTTPレスポンスコードを指定してリダイレクトする
目次
サイトやページの移動に便利なリダイレクト機能
Webサイトやシステムでは、状況に応じて強制的にリダイレクトさせたいことがあります。
例えば、ログインの成功・失敗で表示するページを分けたい場合や、会員として未登録のユーザーが会員ページにアクセスした場合に会員登録ページへ移動する場合などが考えられます。
PHPのリダイレクト自体は非常に簡単に実装することができます。
コード例
<?php
header("Location: https://gray-code.com");
exit;
「https://gray-code.com」にはリダイレクト先のURLを指定します。
たったこれだけでリダイレクトを実装することができます。
ただし、この関数の実行前には他の出力がないようにする必要があります。
次のようなコードはNGです。
エラーとなるコード例
<?php
// ※先にheader関数が実行されていたり、echo関数による出力があってはいけない
header("Content-Type: application/octet-stream");
echo "test";
header("Location: https://gray-code.com");
exit;
header関数について、さらに詳しくはphp.netの下記ページを参照ください。
header関数 – php.net
HTTPレスポンスコードを指定する
リダイレクトする際に、明示的にHTTPレスポンスコードを指定することができます。
index.php
<?php
// HTTPレスポンスコードを「301」にする
header("Location: https://gray-code.com", true, 301);
exit;
何も指定しない場合は「302」の一時的なURI変更というレスポンスコードが設定されます。
もし永続的(サイトのドメインが変更された場合など)なURIの変更の場合は「301」を、HTTPメソッドの変更を制限したリダイレクトをする時のための「307」などを指定可能です。
指定できるHTTPレスポンスコードは下記のページにまとまっています。
HTTP レスポンスステータスコード – MDN Web Docs
※リダイレクト関連は3xx系