PHPプログラミング

ベストプラクティス

出力

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

  • このエントリーをはてなブックマークに追加

別サイトやページの移動に便利なリダイレクトについて解説します。

目次

  1. #  サイトやページの移動に便利なリダイレクト機能
  2. #  HTTPレスポンスコードを指定する

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

Webサイトやシステムでは、状況に応じて強制的にリダイレクトさせたい場合があります。
例えば、ログインの成功・失敗で表示するページを分けたい場合や、会員として未登録のユーザーが会員ページにアクセスした場合に「会員登録」ページに移動する場合など。

PHPのリダイレクト自体は非常に簡単に実装することがdekimasu.

index.php

<?php
header("Location: https://gray-code.com");
exit;

https://gray-code.com」にはリダイレクト先のURLを指定します。
たったこれだけでリダイレクトを実装することができます。

ただし、この関数の実行前には何も出力しないようにする必要があります。
次のようなコードはサーバーによってエラーになるため注意してください。

エラーとなるコード

<?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系です。

  • このエントリーをはてなブックマークに追加