PHP कर्ल HTTP स्थिति प्राप्त करने के लिए रीडायरेक्ट का पालन करते हैं



redirect curl (1)

CURLOPT_FOLLOWLOCATION को TRUE सेट करें।

$opts = array(CURLOPT_RETURNTRANSFER => true, // do not output to browser
                CURLOPT_URL => $url,            // set URL
                CURLOPT_NOBODY => true,         // do a HEAD request only
                CURLOPT_FOLLOWLOCATION => true  // follow location headers
                CURLOPT_TIMEOUT => $timeout);   // set timeout

यदि आप कर्ल के लिए बाध्य नहीं हैं, तो आप इसे मानक पीएचपी एचटीपी रैपरर्स के साथ भी कर सकते हैं (जो कि आंतरिक रूप से कर्ल भी हो सकता है)। उदाहरण कोड:

$url = 'http://example.com/';
$code = FALSE;

$options['http'] = array(
    'method' => "HEAD"
);

$context = stream_context_create($options);

$body = file_get_contents($url, NULL, $context);

foreach($http_response_header as $header)
{
    sscanf($header, 'HTTP/%*d.%*d %d', $code);
}

echo "Status code (after all redirects): $code<br>\n";

PHP धाराओं के साथ पहले ही HEAD देखें

संबंधित प्रश्न यह है कि कैसे एक को देखने के लिए कि क्या एक रिमोट फाइल PHP का उपयोग कर मौजूद है?

मैंने एक वेबपेज के एचटीपी कोड को निम्नलिखित PHP फ़ंक्शन बनाया है।

function get_link_status($url, $timeout = 10) 
{
  $ch = curl_init();

  // set cURL options
  $opts = array(CURLOPT_RETURNTRANSFER => true, // do not output to browser
                CURLOPT_URL => $url,            // set URL
                CURLOPT_NOBODY => true,         // do a HEAD request only
                CURLOPT_TIMEOUT => $timeout);   // set timeout
  curl_setopt_array($ch, $opts);

  curl_exec($ch); // do it!

  $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); // find HTTP status

  curl_close($ch); // close handle

  return $status;
}

मैं 301 और 302 रीडायरेक्ट (संभावना कई रीडायरेक्ट्स) का पालन करने के लिए इस फ़ंक्शन को कैसे संशोधित कर सकता हूं और अंतिम HTTP स्थिति कोड प्राप्त कर सकता हूं?





http-status-code-301