PHPを使用して同じページにリダイレクトするにはどうすればよいですか?
たとえば、ローカルの私のWebアドレスは次のとおりです。
http://localhost/myweb/index.php
私のウェブサイト内で別のページにリダイレクトするにはどうすればいいですか?
header("Location: clients.php");
私はこれが間違っているかもしれないことを知っていますが、本当に全部を置く必要がありますか?後でそれがhttp://localhost/
?
このようなことをする方法はありますか?また、多くのコードがあり、最後にコードの処理が完了した後、それを使用してリダイレクトしようとしています。それは大丈夫ですか?
同じページをリロードするための私の好ましい方法は$ _SERVER ['PHP_SELF']です
header('Location: '.$_SERVER['PHP_SELF']);
die;
Header()の後に死ぬか終了することを忘れないでください。
編集:(@RafaelBarrosに感謝)
クエリ文字列も必要な場合は、使用します
header('Location:'.$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']);
die;
編集:(@HugoDelsingに感謝)
HtaccessのURL操作が有効な場合、$ _ SERVER ['PHP_SELF']の値が間違った場所に移動する可能性があります。その場合、正しいURLデータはリダイレクトの$_SERVER['REQUEST_URI']
にあります。これは、以下のNabilの答えのようになります。
header("Location: http://$_SERVER[HTTP_Host]$_SERVER[REQUEST_URI]");
exit;
必要に応じて、$ _ SERVER [REQUEST_URI]を使用して$_SERVER['PHP_SELF']
に正しい値を割り当てることもできます。これは、リダイレクト機能を頻繁に使用し、それを変更したくない場合に役立ちます。次のように、リクエストハンドラに正しい値を設定するだけです。
$_SERVER['PHP_SELF'] = 'https://sample.com/controller/etc';
別のエレガントなものは
header("Location: http://$_SERVER[HTTP_Host]$_SERVER[REQUEST_URI]");
exit;
本当に普遍的になるために、私はこれを使用しています:
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off'
|| $_SERVER['SERVER_PORT'] == 443) ? 'https://' : 'http://';
header('Location: '.$protocol.$_SERVER['HTTP_Host'].$_SERVER['REQUEST_URI']);
exit;
好き $_SERVER['REQUEST_URI']
これはmod_rewriteやGET変数を尊重するためです。
https://stackoverflow.com/a/2886224/94737 からのhttps検出
header('Location: '.$_SERVER['PHP_SELF']);
また動作します
クエリパラメータを気にしない場合の簡単な方法:
header("location: ./");
header("Location: ");
(値なし)を使用してみたところ、現在のページにリダイレクトされました。
以下の単純な行は問題なく機能します。
header("Location: ?");