我用CURL写了一些复杂的东西。我碰巧遇到了一个情况,我需要知道CURL加载的最后一个网址(如果它被重定向),或者只是来自curl_init($url)
的原始网址。
我想如果它被重定向,我可以解析Location
标题:
if(preg_match('/^Location:(.*)$/mi', $headers, $matches)>0) {
echo "Final location is: {$matches[1]}\n"; //We know location thanks to follow location
}
else {
echo "Well, I'm doomed...\n"; //We don't know anything
}
顺便说一句,这就是我不太喜欢PHP资源的原因。
再想一想我意识到上面的脚本无效 - 您在重定向时加载的最后一页不会发送任何Location
标头。否则,您将再次被重定向!
答案 0 :(得分:2)
试试这个:
$last_URL = curl_getinfo ( $ch ,CURLINFO_EFFECTIVE_URL );
P.S:如果CURL达到重定向限制或CURLOPT_FOLLOWLOCATION
设置为假(例如在安全模式下),则应检查位置标题。