2017-02-16 46 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