訪問者を別のページにリダイレクトするには(特に条件付きループで便利)、次のコードを使用します。
<?php
header('Location: mypage.php');
?>
この場合、mypage.php
は、訪問者をリダイレクトするページのアドレスです。このアドレスは絶対的なものにすることができ、次の形式でパラメータを含めることもできます。mypage.php?param1=val1&m2=val2)
相対パス/絶対パス
相対パスまたは絶対パスを処理する場合、サーバーのルート(DOCUMENT_ROOT)から絶対パスを選択するのが理想的です。次の形式を使用します。
<?php
header('Location: /directory/mypage.php');
?>
ターゲットページが別のサーバーにある場合は、完全なURLを含めます。
<?php
header('Location: http://www.ccm.net/forum/');
?>
HTTPヘッダー
HTTPプロトコルによれば、HTTPヘッダーはbefore
任意のタイプのコンテンツを送信する必要があります。これは、ヘッダーの前に文字を送信してはならないことを意味します。空のスペースも送信しないでください。
一時的/永続的なリダイレクト
デフォルトでは、上記のリダイレクトのタイプは一時的なものです。つまり、Google検索などの検索エンジンでは、インデックス作成時にリダイレクトが考慮されません。
ページが別の場所に完全に移動したことを検索エンジンに通知するには、次のコードを使用します。
<?
header('Status: 301 Moved Permanently', false, 301);
header('Location: new_address');
?>
たとえば、このページには次のコードがあります。
<?
header('Status: 301 Moved Permanently', false, 301);
header('Location: /pc/imprimante.php3');
exit();
?>
上記のリンクをクリックすると、このページに自動的にリダイレクトされます。さらに、これは永続的なリダイレクトです(ステータス:301永久に移動)。したがって、最初のURLをGoogleに入力すると、リダイレクトされた2番目のリンクに自動的にリダイレクトされます。
PHPコードの解釈
header()の後にあるPHPコードは、訪問者がリダイレクトで指定されたアドレスに移動した場合でも、サーバーによって解釈されます。ほとんどの場合、これは、サーバーの負荷を減らすためにheader()
、exit()
関数の関数を追跡するメソッドが必要であることを意味します。
<?
header('Status: 301 Moved Permanently', false, 301);
header('Location: address');
exit();
?>