forcer un code retour http 200 en php

Bonjour,

J’avais l’habitude de donner des codes de retour http en php pour signaler des erreurs, c’est devenu de plus en plus vrai quand la réécriture d’url est devenue la norme.

Voici les codes de retour que j’utilise le plus :

  • 404 pour un lien invalide
  • 403 pour les gens inconnus dans une zone protégée
  • 401 pour les gens connus dans une zone dont ils n’ont pas accès
  • 501 pour un lien valide non configuré dans la base de données
  • 503 pour une erreur de service (par exemple mod_rewrite pas fonctionnel)

Il y en a d’autres qui sont implicitements envoyés par apache ou php.

En allant chez free.fr, htaccess n’accepte quasi rien.
La réécriture n’est pas possible directement et on a recours à la redirection de l’erreur 404 d’apache pour aller sur notre point d’entrée.

Jusqu’ici tout va bien, mais quand j’ai servi ma page, je ne veux pas qu’elle renvoie 404. Ce n’est pas un souci car j’ai l’habitude d’envoyer des codes de retour, donc si aucune erreur n’est détectée, je rajoute avant tout envoi le code suivant :

header("HTTP/1.1 200 Ok");

Sauf que le code retour 200 n’est pas honoré par php, j’ai donc cherché dans la doc de php pour trouver une alternative qui puisse donner un code 200 afin que les bots ne soient pas induits en erreur.

http_response_code(200);

Malheureusement tout aussi inefficace.

J’allais abandonner quand je suis tombé sur une réponse dans stackoverflow.

header("Status: 200");

J’ai vite testé et ça marche. J’ai aussi testé pour les autres codes et ça marche aussi.

Voilà donc ma nouvelle façon d’envoyer un code d’erreur (et de réussite) http via php.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *