質問: phpでリダイレクトするにはどうすればいいですか? phpを使用してユーザーを別のページにリダイレクトすることは可能ですか?ユーザーがwww.example.com/page.phpにアクセスし、それらをwww.example.com/index.phpにリダイレクトしたいとします。メタリフレッシュを使用せずにどのようにしますか。出来ますか?これは私のページを無許可のユーザーからさえ保護することができます。
回答: 訪問者を別のページにリダイレクトするには(特に条件付きループで便利)、次のコードを使用します。<?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 moved permanently)。そのため、最初のurlをgoogleに入力すると、自動的に2番目のリダイレクトされたリンクにリダイレクトされます。 phpコードの解釈 header()の後にあるphpコードは、訪問者がリダイレクトで指定されたアドレスに移動したとしても、サーバーによって解釈されます。ほとんどの場合、これはサーバーの負荷を減らすためにheader()関数のexit()関数に従う方法が必要であることを意味します。<? header('status: 301 moved permanently', false, 301); header('location: address'); exit(); ?>