true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_MAXREDIRS => 5, CURLOPT_TIMEOUT => 10, CURLOPT_USERAGENT => 'ExampleRedirectClient/1.0', ]; if (defined('CURLOPT_REDIR_PROTOCOLS_STR')) { $options[CURLOPT_REDIR_PROTOCOLS_STR] = 'http,https'; } elseif ( defined('CURLOPT_REDIR_PROTOCOLS') && defined('CURLPROTO_HTTP') && defined('CURLPROTO_HTTPS') ) { $options[CURLOPT_REDIR_PROTOCOLS] = CURLPROTO_HTTP | CURLPROTO_HTTPS; } curl_setopt_array($ch, $options); $body = curl_exec($ch); if ($body === false) { $errno = curl_errno($ch); $error = curl_error($ch); curl_close($ch); echo "cURL error {$errno}: {$error}" . PHP_EOL; exit(1); } $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); $finalUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); $redirects = curl_getinfo($ch, CURLINFO_REDIRECT_COUNT); curl_close($ch); echo "HTTP status: {$status}" . PHP_EOL; echo "Final URL: {$finalUrl}" . PHP_EOL; echo "Redirects followed: {$redirects}" . PHP_EOL; echo "Response body: " . trim($body) . PHP_EOL; if ($status < 200 || $status >= 300) { exit(1); }