2017-02-16 33 views
0

特定のサイトのウェブページの最終的なリダイレクトステータスコードを探したい。有効期限が過ぎると、このサイトはこれらのページを削除し、404のステータスコードでホームページにリダイレクトします。最終的なリダイレクトされたステータスコードをcurlで取得するPHP

私が行きたいページの1つがhttp://example.com/my-pageであり、このページはもう存在しないとしましょう。それで私はhttp://example.com/にリダイレクトされます。私はクローム開発者のツールで確認し、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 
関連する問題