2017-02-16 43 views
0

我想查找某個站點中的網頁的最終重定向狀態代碼。給定失效日期後,本網站將刪除這些頁面,並使用404狀態碼將您重定向到其主頁。使用curl獲取最終的重定向狀態代碼PHP

假設我想去的其中一頁是http://example.com/my-page,這個頁面不再存在。所以它會將我重定向到http://example.com/。我使用Chrome開發人員工具進行了檢查,併發送了404狀態代碼。

現在是這個問題。我想檢查這個頁面是否是404。我有以下PHP函數。

function findStatus($url) 
    { 
     $handle = curl_init($url); 
     curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE); 

     /* Check for 404 (file not found). */ 
     $httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE); 

     curl_close($handle); 

     if ($httpCode == 404) { 
      return true; 
     } else { 
      return false; 
     } 

    } 

當我檢查上述功能的相關頁面時,我得到302永久重定向。我想這個函數在重定向之前獲取狀態碼。

This answer描述如何獲取URL,但不是狀態碼。如何在頁面重定向完成後獲取狀態代碼?

回答

0

既然你找到這個問題的答案:Get final redirect with Curl PHP

您是非常接近。 curl_getinfo()可以得到很多信息。

$url = 'http://localhost:8080/loc.php'; 

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 

$html = curl_exec($ch); 

$info = curl_getinfo($ch); 

curl_close($ch); 

print_r($info); 
# Array 
# (
#  [url] => http://localhost:8080/dest.php 
#  [content_type] => text/html; charset=UTF-8 
#  [http_code] => 404