PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPでのリダイレクト実装方法|header関数の基本と使い方を解説

PHPでは、組み込み関数であるheader関数を使うことで、ユーザーをあるページから別のページへリダイレクト(転送)できます。header関数は、生のHTTPヘッダーをクライアント(ブラウザ)に送信するための関数で、ページの転送以外にも、コンテンツタイプの指定やキャッシュ制御など、さまざまなHTTPヘッダーの操作に利用されます。

header関数の構文

header( $header_value, $replace_value, $http_response_code)

header関数には、以下の3つのパラメータを指定できます。

  • $header_value:送信するヘッダー文字列を指定します。「Location:」など、ヘッダーの種類と値を組み合わせた文字列を渡します。
  • $replace_value:同じ種類のヘッダーがすでに存在する場合に、それを置き換えるかどうかを真偽値(true / false)で指定します。省略した場合はtrue(置き換える)がデフォルトとなります。
  • $http_response_code:HTTPレスポンスコード(ステータスコード)を強制的に指定します。例えば「301」(恒久的な移動)や「302」(一時的な移動)などを指定できます。

リダイレクトの基本的な例

<?php
   header("Location: https://www.tutorialspoint.com");
   exit;
?>

この例では、header関数の引数に「Location:」と転送先のURLを指定することで、アクセスしたユーザーを指定したサイトへ自動的に転送しています。リダイレクト後はスクリプトの実行を続ける必要がないため、exit文(またはdie関数)を必ず呼び出すのがポイントです。これにより、以降のコードが意図せず実行されるのを防げます。

ステータスコードを指定したリダイレクト

SEOの観点からは、リダイレクトの種類を示すHTTPステータスコードを明示的に指定することが推奨されます。第3引数にステータスコードを渡すことで、恒久的な移転なのか一時的な移動なのかを検索エンジンに正しく伝えられます。

<?php
   // 恒久的なリダイレクト(301)
   header("Location: https://example.com/new-page", true, 301);
   exit;

   // 一時的なリダイレクト(302)
   header("Location: https://example.com/temp-page", true, 302);
   exit;
?>

注意点

  • header関数は、何らかの出力(HTMLタグ・空白文字など)より前に呼び出す必要があります。すでに出力が行われた後に呼び出すと、「headers already sent」という警告が発生し、リダイレクトが機能しません。
  • 相対URLではなく、絶対URLを指定するのが安全です。
  • リダイレクト処理の後は必ずexitを実行し、スクリプトの処理を終了させましょう。

このように、PHPでのページ転送はheader関数を使えば簡単に実装できます。転送先のURLをheader関数内で指定するだけで動作するため、フォーム送信後の画面遷移や、ログイン状態に応じたアクセス制御など、さまざまな場面で活用されています。

  1. PHPのheader()関数とは?主な用途と使い方を実例付きで解説

    header()関数は、PHPにあらかじめ用意されているネイティブ関数です。この関数を使用すると、Webサーバーがクライアント(ブラウザ)へ実際の出力を行う前に、HTTPヘッダーの内容を制御することができます。 header関数は、サーバーが返すHTTPレスポンスのヘッダーを設定する役割を担います。PHPでは、ページのリダイレクト、タイムゾーンの設定、キャッシュ制御など、さまざまな場面でheader関数が活用されています。 以下に、PHPにおけるheader()関数の代表的な用途を紹介します。 1. ページのリダイレクト あるWebページから別のWebページへユーザーを転送(リダイレクト)し

  2. PHPのheader()関数とは?使い方とパラメータを解説

    PHPのheader()関数は、クライアント(ブラウザなど)に対して生のHTTPヘッダーを送信するための関数です。コンテンツの種類の指定、リダイレクト、ファイルのダウンロード処理など、HTTP通信の制御において重要な役割を果たします。 基本構文 header(string, replace, resp_code) パラメータ string − 送信するヘッダー文字列を指定します。例:「Content-type:application/pdf」など。 replace − 省略可能なパラメータです。同じ種類のヘッダーが既に存在する場合に、それを置き換えるか(true)、2つ目のヘッダーとして追加