Как я могу определить, перенаправляет ли URL в PHP? - PullRequest
10 голосов
/ 09 января 2009

Я видел, как кто-то задавал вопрос об обнаружении, если URL перенаправляет из groovy и perl, но не может найти что-либо на PHP.

Кто-нибудь знает, где я мог бы найти этот код, который делает это?

Ответы [ 3 ]

16 голосов
/ 09 января 2009
$ch = curl_init('http://www.yahoo.com/');
curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (($code == 301) || ($code == 302)) {
  //This was a redirect
}
6 голосов
/ 27 января 2009

На самом деле, я нашел это работает лучше всего:

    function GetURL($URL)
    {
            $ch = curl_init($URL);

            curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);


            curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);

            curl_exec($ch);

            $code = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);

            curl_close($ch);

            return $code;
    }
3 голосов
/ 27 января 2009

Помните, что ни один из ответов, которые обычно даются на этот вопрос, не учитывает перенаправление, вызванное javascript, закодированным в возвращаемом документе (или я думаю, что мета-обновление тега в HTML.) Так что возможно, что независимо от того, что при тестировании с использованием такого кода вы пропустите определенные виды «перенаправлений».

К сожалению, единственный способ обойти это - сделать так, чтобы реальный веб-браузер попал на веб-страницу, и веб-браузер был изменен таким образом, чтобы он сообщал о перенаправлениях javascript и meta-refresh.

Ура! * * 1005

...