現在の位置: ホーム> 最新記事一覧> Header()を使用してページリダイレクトを実装する方法

Header()を使用してページリダイレクトを実装する方法

M66 2025-05-18

PHPでは、 Header()関数を使用して、元のHTTPヘッダー情報を送信します。これらのヘッダーは、ページのリダイレクトを設定するなど、ブラウザの動作を制御できます。通常、ページのリダイレクトは、ログイン後のユーザーのホームページへのリダイレクトや、特定の条件下での新しいページへのリダイレクトなど、別のページにユーザーを向ける必要がある場合に使用されます。

この記事では、PHPでHeader()関数を使用してページリダイレクトを実装し、いくつかの一般的な例を表示する方法を紹介します。

基本的な構文

Header()関数の基本的な構文は次のとおりです。

 header(string $header, bool $replace = true, int $response_code = 0): void
  • $ヘッダー:送信するHTTPヘッダー文字列を渡します。

  • $の交換True (デフォルト)の場合、現在のヘッダーの同じタイプの値が置き換えられます。 falseの場合、ヘッダーはヘッダーに追加されます。

  • $ response_code :HTTP応答ステータスコードを指定します。デフォルトは0です。つまり、ステータスコードが設定されていません。

ページリダイレクトを実装します

ページリダイレクトを実行するために、ロケーションヘッダーを介して実現できます。ロケーションヘッダーは、ブラウザが新しいURLをロードすることを示します。

たとえば、次のコードは、ユーザーをhttps://m66.net/newpageにリダイレクトします。

 <?php
header("Location: https://m66.net/newpage");
exit();
?>

コード解析:

  • ヘッダー( "場所:https://m66.net/newpage"); :このコード行は、ブラウザにhttps://m66.net/newpageにジャンプするように指示します。

  • 出口(); :リダイレクトを送信した後、スクリプトが実行されないようにするために、通常、 exit()関数が追加されます。これにより、追加のコンテンツがリダイレクト後に出力されるのを防ぎます。

リダイレクト応答コードを設定します

カスタムHTTPステータスコードを送信する必要がある場合があります。デフォルトでは、ロケーションヘッダーは302の見つかったステータスコードを使用します。ただし、他のステータスコードを明示的に設定することもできます。

たとえば、 301移動した永続的なステータスコードを使用するには:

 <?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: https://m66.net/newpage");
exit();
?>

コード解析:

  • ヘッダー( "http/1.1 301移動恒久的に"); :HTTP応答ステータスコードを301に設定し、ページが永続的に移行されたことを示します。

  • ヘッダー( "場所:https://m66.net/newpage"); :ブラウザに新しいURLにリダイレクトするように指示します。

相対URLを使用します

完全な絶対URLを使用することに加えて、リダイレクトに相対URLを使用することもできます。このようにして、ユーザーがPHPページにアクセスすると、リダイレクトは現在のWebサイトのルートディレクトリに基づいています。

たとえば、ユーザーを現在のWebサイトの/newPageページにリダイレクトします。

 <?php
header("Location: /newpage");
exit();
?>

この場合、 /newPageは現在のドメイン名に基づいてリダイレクトされます。現在、ユーザーがアクセスしているページがhttps://m66.net/oldpageの場合、リダイレクトされたURLはhttps://m66.net/newpageになります。

出力のリダイレクトを防ぎます

ヘッダー()関数は、何かを出力する前に呼び出す必要があります。これは、HTMLなどのページ上の他のコンテンツの前にHTTPヘッダー情報を送信する必要があるためです。ページがコンテンツの出力を開始した場合、 Header()関数は正しく機能しないため、エラーがトリガーされます。

この問題を回避するには、 Header()関数への呼び出しがスクリプトの先頭にあるか、HTMLまたはその他の出力を送信する前に確認してください。

出力の前に誤って出力(HTMLタグやスペースなど)がある場合は、 OB_START()を使用して出力をバッファーできます。例えば:

 <?php
ob_start();
header("Location: https://m66.net/newpage");
exit();
ob_end_flush();
?>

ob_start()は出力バッファーを起動し、 ob_end_flush()はスクリプトの最後にバッファをクリアし、出力を送信します。

結論

PHPのHeader()関数は、非常に強力で一般的に使用されるツールであり、特にページリダイレクトの実装に適しています。適切なHTTP応答ステータスコードと組み合わせて位置ヘッダーを正しく設定することにより、一時的なジャンプであろうと永久的なジャンプであろうと、ブラウザのリダイレクト動作を制御できます。

Header()を呼び出すときは出力を避けて、リダイレクトをスムーズに実行できるようにしてください。必要に応じて、出力バッファリングを使用して、出力による問題を回避することもできます。

この記事がPHPのページリダイレクトを理解するのに役立つことを願っています!