Как перенаправить на ту же страницу в PHP
Как я могу перенаправить на ту же страницу с помощью PHP?
Например, локально мой веб-адрес:
http://localhost/myweb/index.php
Как я могу перенаправить на своем сайте на другую страницу, скажем:
header("Location: clients.php");
Я знаю, что это может быть неправильно, но мне действительно нужно поставить все это? Что, если позже это не http://localhost/
?
Есть ли способ сделать что-то подобное? Кроме того, у меня много кода, а затем в конце после того, как он завершил обработку некоторого кода... Я пытаюсь перенаправить с этим. Это нормально?
Ответы
Ответ 1
Существует несколько различных $_SERVER
(docs), которые возвращают информацию о текущей странице, но мой предпочтительный метод - использовать $_SERVER['HTTP_HOST']
:
header("Location: " . "http://" . $_SERVER['HTTP_HOST'] . $location);
где $location
- путь после домена, начиная с /
.
Ответ 2
Мой предпочтительный метод для перезагрузки одной и той же страницы - $_SERVER ['PHP_SELF']
header('Location: '.$_SERVER['PHP_SELF']);
die;
Не забывайте умирать или выходить после своего заголовка();
Изменить: (Спасибо @RafaelBarros)
Если строка запроса также необходима, используйте
header('Location:'.$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']);
die;
Ответ 3
Еще один элегантный -
header("Location: http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]");
exit;
Ответ 4
Чтобы быть универсальным, я использую это:
$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 из fooobar.com/questions/8219/...
Ответ 5
header('Location: '.$_SERVER['PHP_SELF']);
также будет работать
Ответ 6
Я использую правильно в localhost:
header('0');