@paralelogram

Как понять (получить) что был редирект?

Допустим я перехожу по ссылке:
http://site.ru
Меня перекидывает на:
http://mysite.ru

Можно как то поймать редирект на PHP?

Например я делаю:
header('Location: http://site.ru');

И если он редирект, то мне например возвращается 0, если нет редиректа то 1.
  • Вопрос задан
  • 4153 просмотра
Пригласить эксперта
Ответы на вопрос 5
@metnee
Не понятно для чего это вам.
Вы можете редиректнуть на такую страницу:
header('Location: http://site.ru?redirect=1');
И тогда на ней проверить
if( isset($_GET["redirect"]) )

Если вам нужно поймать редирект непосредственно перед его совершением, то вы скорее всего делаете что-то в корне неверное и вам нужно пересмотреть свой код.
Ответ написан
Комментировать
villiwalla
@villiwalla
HTML-верстка
$_SERVER['HTTP_REFERER'] - Адрес страницы (если есть), которая привела браузер пользователя на эту страницу. Этот заголовок устанавливается веб-браузером пользователя. Не все браузеры устанавливают его и некоторые в качестве дополнительной возможности позволяют изменять содержимое заголовка HTTP_REFERER. Одним словом, в самом деле ему нельзя доверять.
Ответ написан
neuotq
@neuotq
Прокрастинация
Если ты цель редиректа, то через $_SERVER['HTTP_REFERER'] сможешь узнать источник перехода на сайт.
Если ты хочешь узнать есть ли редирект у цели, используй curl.
Ответ написан
Комментировать
Stalker_RED
@Stalker_RED
Можно curl'ом получить заголовки и посмотреть есть ли среди них Location: *
Как-то так:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$a = curl_exec($ch);
if(preg_match('#Location: (.*)#', $a, $r))
 $l = trim($r[1]);
zzz.rezo.net/HowTo-Expand-Short-URLs.html
Ответ написан
Комментировать
Кроме "header('Location: site.ru');" нужно правильный код установить функцией "http_response_code(302)" (302 - для примера, весь список смотри тут - https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D...

А уж на конечной странице вы всегда сможете по коду определить, был ли редирект и какой именно это был редирект (если правильно коды заюзаете).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы