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を使用することもできます。このようにして、ユーザーが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のページリダイレクトを理解するのに役立つことを願っています!