获取网址,给定的网址重定向到

时间:2012-09-05 12:54:59

标签: php web

我从rss链接挖掘数据并得到一堆网址,如:

http://feedproxy.google.com/~r/electricpig/~3/qoF8XbocUbE/

....如果我在网络浏览器中访问链接,我会被重定向到:

http://www.electricpig.co.uk/stuff

在php中有没有办法编写一个函数,当给出一个url" a"将用户重定向到网址" b",返回网址" b" ?

2 个答案:

答案 0 :(得分:10)

你走了:

function getRedirect($oldUrl) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $oldUrl);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $res = curl_exec($ch);
    $newUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
    curl_close($ch);
    return $newUrl;
}

该函数需要cURL,并使用CURLINO_EFFECTIVE_URL。你可以在phpdoc here

上查找

修改

如果你确定oldUrl没有通过javascript重定向到newUrl,那么你也可以避免使用

获取newUrl的主体
curl_setopt($ch, CURLOPT_NOBODY, TRUE); // remove body 

$res = curl_exec($ch);之前的上一行放在函数getRedirect中,以便更快地执行。

答案 1 :(得分:1)

public function getRedirect($url) {
    $headers = get_headers($url, 1);
    if (array_key_exists("Location", $headers)) {
        $url = getRedirect($headers["Location"]);
    }
    return $url;
}