With curl,使用這個:它遵循重定向直到找到端點。在包含的代碼中,我使用goo.gl將url縮短爲一個rando圖像。你會看到輸出是原始鏈接(並且它會輸出任意數量的重定向和它們的URL),並且最終重定向到實際文件。我認爲這是你正在尋找的。我最初並沒有寫這篇文章,而是在不久前的某個地方發現它,並在需要時再次多次重複使用它。它似乎很適合在很多地方。很高興通過它。我認爲這可能有助於實現你正在尋找的東西。
<?php
function follow_redirect($url){
$redirect_url = null;
if(function_exists("curl_init")){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
}
else{
$url_parts = parse_url($url);
$sock = fsockopen($url_parts['host'], (isset($url_parts['port']) ? (int)$url_parts['port'] : 80));
$request = "HEAD " . $url_parts['path'] . (isset($url_parts['query']) ? '?'.$url_parts['query'] : '') . " HTTP/1.1\r\n";
$request .= 'Host: ' . $url_parts['host'] . "\r\n";
$request .= "Connection: Close\r\n\r\n";
fwrite($sock, $request);
$response = fread($sock, 2048);
fclose($sock);
}
$header = "Location: ";
$pos = strpos($response, $header);
if($pos === false){
return false;
}
else{
$pos += strlen($header);
$redirect_url = substr($response, $pos, strpos($response, "\r\n", $pos)-$pos);
return $redirect_url;
}
}
$url = 'http://goo.gl/66VJB';
echo '<ol>';
while(($newurl = follow_redirect($url)) !== false){
echo '<li>', $url, '</li>';
$url = $newurl;
}
echo '</ol>';
echo '<a href="', $url, '">', $url, '</a>';
?>
輸出:
- http://goo.gl/66VJB
http://1.bp.blogspot.com/_XE0TDW07Noo/TOSVQXZtgAI/AAAAAAAAELo/aG80jZ7u_fo/s1600/aptitude_test.gif
下載Fiddler,然後在瀏覽器中運行的網址...小提琴手將讓您檢查數據。 – highwingers 2013-04-06 04:17:41
並非每個URL都需要一個文件擴展名。這可能是那個文件。 – icktoofay 2013-04-06 04:22:15
@highwingers:我安裝了fiddler並試圖檢查url,fiddler也顯示了視頻信息,但不是真正的路徑,我的意思是時間路徑與文件擴展名。 – naveencgr8 2013-04-06 04:53:17