【コピペOK】PHPリダイレクト完全ガイド!5つのステップで理解する

PHPリダイレクトのサンプルコードを表示するモニターPHP
この記事は約6分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

PHPリダイレクトについて学びたいと思っているあなたへ。

この記事を読むことで、PHPリダイレクトの基本から応用までを理解し、自分のプロジェクトに活用することができるようになります。

詳細なサンプルコードとともに、リダイレクトの使い方、注意点、カスタマイズ方法を学びましょう。

●リダイレクトとは?

リダイレクトとは、Web上であるページから別のページへユーザーを自動的に転送することを指します。

これは、ウェブサイトのURLが変更されたときや、特定の条件下でユーザーを別のページに誘導したいときなどに使用されます。

●PHPでのリダイレクト方法

PHPでリダイレクトを行うには、主にheader関数を使用します。

この関数はHTTPヘッダを送信するためのもので、リダイレクトを行う際にはLocationヘッダを設定します。

○基本的なリダイレクト

基本的なリダイレクトは次のように行います。

このコードは、ユーザーを指定したURLにリダイレクトします。

<?php
header('Location: https://example.com');
exit;

このコードではheader関数を使ってLocationヘッダを設定し、その後exit関数でスクリプトの実行を停止しています。

exit関数を呼び出すことで、リダイレクト後に不要なコードが実行されるのを防ぎます。

○301リダイレクト

301リダイレクトは、ページのURLが恒久的に変更されたことを示すために使用されます。

次のようにheader関数を使って設定します。

<?php
header('HTTP/1.1 301 Moved Permanently');
header('Location: https://example.com');
exit;

このコードでは、まずHTTP/1.1 301 Moved PermanentlyというHTTPステータスコードを送信して、その後でLocationヘッダを設定しています。

○302リダイレクト

302リダイレクトは、ページのURLが一時的に変更されたことを示すために使用されます。

基本的なリダイレクトと同じく、Locationヘッダのみを設定します。

<?php
header('Location: https://example.com');
exit;

このコードでは、HTTP/1.1 301 Moved Permanentlyを送信せずに、Locationヘッダのみを設定しています。

これは、リダイレクト先のURLが一時的なものであることを示しています。

●サンプルコードとその説明

PHPでのリダイレクトを行うためのサンプルコードを紹介します。

それぞれのコードの詳細な説明も併せてご覧ください。

○サンプルコード1:基本的なリダイレクト

このコードでは、header関数を使ってLocationヘッダを設定し、その後exit関数でスクリプトの実行を停止しています。

これにより、ユーザーは指定したURL(この例ではhttps://example.com)へリダイレクトされます。

<?php
header('Location: https://example.com');
exit;

○サンプルコード2:301リダイレクト

このコードでは、まずHTTP/1.1 301 Moved PermanentlyというHTTPステータスコードを送信して、その後でLocationヘッダを設定しています。

これにより、ユーザーは指定したURLへ恒久的にリダイレクトされます。

<?php
header('HTTP/1.1 301 Moved Permanently');
header('Location: https://example.com');
exit;

○サンプルコード3:302リダイレクト

このコードでは、Locationヘッダのみを設定しています。

これは、リダイレクト先のURLが一時的なものであることを示しています。

<?php
header('Location: https://example.com');
exit;

●リダイレクトの応用例

リダイレクトは、さまざまなシチュエーションで利用できます。

ログインページへのリダイレクトとエラーページへのリダイレクトの2つの応用例を紹介します。

○サンプルコード4:ログインページへのリダイレクト

このコードでは、ユーザーがログインしていない場合にログインページへリダイレクトします。

$_SESSION['loggedin']が設定されていない場合、つまりユーザーがログインしていない場合に、header関数を使ってログインページへのリダイレクトを行います。

<?php
session_start();
if (!isset($_SESSION['loggedin'])) {
    header('Location: https://example.com/login.php');
    exit;
}

○サンプルコード5:エラーページへのリダイレクト

このコードでは、何らかのエラーが発生した場合にエラーページへリダイレクトします。

$errorが真(true)の場合、つまりエラーが発生した場合に、header関数を使ってエラーページへのリダイレクトを行います。

<?php
if ($error) {
    header('Location: https://example.com/error.php');
    exit;
}

●注意点と対処法

PHPでリダイレクトを行う際には、いくつかの注意点があります。

  1. header関数は、ヘッダがすでに送信された後や、出力が存在する場合には使えません。
    これは、HTTPヘッダは常にHTTPボディ(HTMLなどのコンテンツ)よりも先に送信されるべきだからです。
    この問題を避けるためには、header関数を呼び出す前に出力を行わないようにするか、出力バッファリングを使用します。
  2. header関数を呼び出した後は、必ずexit関数を呼び出してスクリプトの実行を停止するようにしましょう。
    これを行わないと、リダイレクト後もスクリプトが実行され続け、予期しない結果を引き起こす可能性があります。

●カスタマイズ方法

リダイレクトの挙動は、header関数で設定するHTTPヘッダによってカスタマイズできます。

例えば、リダイレクト先のURLにパラメータを追加したり、リダイレクトのステータスコードを変更したりすることができます。

まとめ

この記事では、PHPでのリダイレクトの基本から応用までを解説しました。

リダイレクトはWeb開発において重要な技術であり、PHPでの実装方法を理解することで、より高度なWebアプリケーションの開発が可能になります。

この記事が、あなたのPHP学習に役立つことを願っています。