Как определить, перенаправляется ли URL-адрес в PHP?
Вопрос
Я видел, как кто-то задал вопрос об обнаружении перенаправления URL-адреса с groovy и perl, но не смог найти ничего на PHP.
Кто-нибудь знает, где я мог бы найти этот код, который делает это?
Решение 2
На самом деле, я нашел, что это работает лучше всего:
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;
}
Другие советы
$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
}
Помните, что ни один из ответов, которые обычно даются на этот вопрос, не учитывает перенаправление, вызванное javascript, закодированным в возвращаемом документе (или, я думаю, тег метаобновления в HTML). Так что вполне возможно, что независимо от того, что вы пропустите определенные виды «перенаправлений» при тестировании с использованием такого рода кода.
К сожалению, единственный способ обойти это - заставить настоящий веб-браузер открыть веб-страницу и изменить веб-браузер таким образом, чтобы он сообщал о перенаправлениях javascript и метаобновления.
Ваше здоровье!