PHPプログラミング

最終更新日:
公開日:

レシピ

出力

リダイレクトする: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系