2012-04-11 62 views
1

目前我使用下面的函數檢查URL存在,或不使用PHP捲曲

function urlExist($url) 
{ 
       $handle = curl_init($url); 
       if (false === $handle) 
       { 
         return false; 
       } 
       curl_setopt($handle, CURLOPT_HEADER, false); 
       curl_setopt($handle, CURLOPT_FAILONERROR, true); // this works 
       curl_setopt($handle, CURLOPT_HTTPHEADER, Array("User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15")); // request as if Firefox 
       curl_setopt($handle, CURLOPT_NOBODY, true); 
       curl_setopt($handle, CURLOPT_RETURNTRANSFER, false); 
       $connectable = curl_exec($handle); 
       ##print $connectable; 
       curl_close($handle); 
       return $connectable; 
} 

它工作正常進行簡單的URL,但對於URL重定向到另一個域

回答

6

您需要設置不工作FOLLOWLOCATION

curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true); 

然而,有在這裏發出GET請求沒有意義的。由於只有標題被傳送,所以簡單的HEAD更輕。要做到這一點,設置NOBODY爲true:

curl_setopt($handle, CURLOPT_NOBODY, true); 
0

我使用的是相同的功能,但我不能滿足與域trieuvieclam.com問題重定向到新的域名。我使用的是Chrome瀏覽器

function url_exists($url) { 
    $handle = curl_init($url); 
    if (false === $handle) 
    { 
      return false; 
    } 

    curl_setopt($handle, CURLOPT_HEADER, false); 
    curl_setopt($handle, CURLOPT_FAILONERROR, true); // this works 
    curl_setopt($handle, CURLOPT_HTTPHEADER, Array("User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15")); // request as if Firefox 
    curl_setopt($handle, CURLOPT_NOBODY, true); 
    curl_setopt($handle, CURLOPT_RETURNTRANSFER, false); 
    curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true); 
    curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, 3); 
    $connectable = curl_exec($handle); 
    ##print $connectable; 
    curl_close($handle); 
    if($connectable){ 
     return true; 
    } 
    return false; 
} 

我試圖改變這一行:curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true);false,但結果還是一樣的(現有域)。

if (false === $handle) 
     { 
       return false; 
     } 

這種情況從來沒有任何字符串見面,甚至沒有一個URL,也許它捲曲時沒有在服務器僅支持匹配。