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