PHP

リダイレクトする:header関数

  1. 最終更新日:
  2. 公開日:

header関数を使って別サイトや別ページにリダイレクトする方法について解説します。

この記事のポイント

  • header関数を使って他ページへのリダイレクトを設定する
  • リダイレクトでは適切なHTTPレスポンスコードを指定する

サイトやページの移動に便利なリダイレクト機能

Webサイトやシステムでは、状況に応じて強制的にリダイレクトさせたいことがあります。

例えば、ログインの成功・失敗で表示するページを分けたい場合や、会員として未登録のユーザーが会員ページにアクセスした場合に会員登録ページへ移動する場合などが考えられます。

PHPのリダイレクト自体は非常に簡単に実装することができます。

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系

記事一覧