Как я могу перенаправить на ту же страницу с помощью PHP?
Например, локально мой веб-адрес:
http://localhost/myweb/index.php
Как я могу перенаправить на своем сайте на другую страницу, скажем:
header("Location: clients.php");
Я знаю, что это может быть неправильно, но мне действительно нужно поставить все это? Что, если позже это не http://localhost/
?
Есть ли способ сделать что-то подобное? Кроме того, у меня много кода, а затем в конце после того, как он завершил обработку некоторого кода … Я пытаюсь перенаправить с этим. Это нормально?
Существует несколько различных свойств $_SERVER
( docs ), которые возвращают информацию о текущей странице, но мой предпочтительный метод заключается в использовании $_SERVER['HTTP_HOST']
:
header("Location: " . "http://" . $_SERVER['HTTP_HOST'] . $location);
где $location
– путь после домена, начиная с /
.
Мой предпочтительный метод для перезагрузки одной и той же страницы – $ _SERVER ['PHP_SELF']
header('Location: '.$_SERVER['PHP_SELF']); die;
Не забудьте умереть или выйти после заголовка ();
Редактировать: (Спасибо @RafaelBarros)
Если строка запроса также необходима, используйте
header('Location:'.$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']); die;
Еще один элегантный
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 из https://stackoverflow.com/a/2886224/947370
header('Location: '.$_SERVER['PHP_SELF']);
также будет работать
Я правильно использую localhost:
header('0');