Vérifier l’entête HTTP d’une URL
Comment vérifier les entêtes HTTP avec CURL et PHP
Vérifier le code de retour d'une URL peut notamment être utile pour vérifier si une page/lien existe toujours ou non, ou encore pour vérifier si un site est down.
<?php $url = 'https://www.oseox.fr'; $timeout = 10; // Initialisation d'une session cURL $ch = curl_init($url); // Forcer l'utilisation d'une nouvelle connexion (pas de cache) curl_setopt($ch, CURLOPT_FRESH_CONNECT, true); // Définition du timeout de la requête (en secondes) curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); // Si l'URL est en HTTPS if (preg_match('`^https://`i', $url)) { // Ne pas vérifier la validité du certificat SSL curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); } // Suivre les redirections [facultatif] // www.oseox.fr redirige par exemple automatiquement vers oseox.fr // Le code de retour serait ici 301 si l'on ne suivait pas les redirections curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Récupération du contenu retourné par la requête // sous forme de chaîne de caractères via curl_exec() // (directement affiché au navigateur client sinon) curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Ne pas récupérer le contenu de la page requêtée curl_setopt($ch, CURLOPT_NOBODY, true); // Execution de la requête curl_exec($ch); // Récupération du code HTTP retourné par la requête $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); // Fermeture de la session cURL curl_close($ch); echo $http_code; ?>
Les principaux entêtes HTTP utiles sont les suivants :
- 200 : Ok, la requête a été traitée avec succès
- 301 : Redirection permanente (si
CURLOPT_FOLLOWLOCATION = false
) - 302 : Redirection temporaire (si
CURLOPT_FOLLOWLOCATION = false
) - 401 : Accès refusé (demande d'authentification HTTP)
- 403 : Accès refusé (sans demande d'authentification)
- 404 : Page non trouvée
- 500 : Erreur interne du serveur (peut résulter d'un plantage site/serveur)
- 503 : Service indisponible (peut résulter d'un plantage site/serveur)