Codes HTTP et SEO
Portrait Olivier Duffez

Olivier Duffez

Créateur de WebRankInfo,
consultant en référencement

Tous les codes HTTP expliqués avec leur impact en référencement

Si votre serveur ne renvoie pas le bon code HTTP attendu en fonction de la situation, cela peut gêner ou bloquer votre référencement naturel. Voici des explications complètes à mettre en favoris !

Article mis à jour le 05/07/2017, publié initialement le 12/12/2008

Le protocole HTTP prévoit un certain nombre de codes que le serveur web doit renvoyer en fonction de la situation : la page demandée a bien été trouvée, elle a disparu, elle est déplacée, elle est indisponible, etc.

Même si ça peut paraitre compliqué ou anecdotique par certains, il est très important de s’assurer que votre site renvoie les bons codes HTTP. Voici de quoi vous aider à y voir plus clair…

Découvrir les codes HTTP

Qu’est-ce qu’un code HTTP ?

Quand un internaute ou un crawler (par exemple Googlebot) cherche à accéder à une URL, le serveur web correspondant répond d’abord en indiquant un code de réponse, qu’on appelle code HTTP.

Vous connaissez sans doute la fameuse « erreur 404 », mais ce n’est pas la seule ! A chaque situation spécifique, le serveur doit renvoyer le bon code HTTP.

Comment connaître le code HTTP d’une URL ?

Vous ne pouvez pas le voir sans utiliser d’outil ! Au passage, ce n’est pas parce qu’une page affiche en gros « 404 » que le code renvoyé est 404 (il faut le vérifier par un outil).

Je vous propose 2 outils pour vous aider :

Pour tester le code HTTP d’une seule URL utilisez cet outil WebRankInfo

Mais si le référencement compte pour vous, il faut vous assurer d’avoir vérifié le code de 100% des URL accessibles sur votre site. N’allez pas faire ça à la main ou URL par URL…

Pour tester le code HTTP de toutes les URL lancez un audit RM Tech

Je vous propose également la documentation officielle du W3C sur les codes HTTP.

Liste des codes HTTP, avec leur signification

Les 5 familles de codes HTTP

Les codes peuvent être classés en familles :

  • 1xx : information (100 et 101)
  • 2xx : succès (200 à 206)
  • 3xx : redirection (300 à 307)
  • 4xx : erreur sur la page, côté client (400 à 417)
  • 5xx : erreur sur le serveur (500 à 505)

Codes 1xx

  • 100 : OK pour continuer
  • 101 : le serveur a changé de protocoles

Codes 2xx

  • 200 : requête effectuée avec succès
    • c’est le code que doit renvoyer votre serveur pour chaque URL que vous souhaitez rendre accessible
  • 201 : document créé (raison : nouvelle URI)
  • 202 : requête achevée de manière asynchrone (TBS)
  • 203 : requête achevée de manière incomplète
  • 204 : aucune information à renvoyer
  • 205 : requête terminée mais formulaire vide
  • 206 : requête GET incomplète

Codes 3xx

  • 300 : le serveur ne peut pas déterminer le code de retour
  • 301 : document déplacé de façon permanente
  • 302 : document déplacé de façon temporaire
    • sauf cas très particulier, je déconseille d’utiliser la 302
  • 303 : redirection avec nouvelle méthode d’accès
  • 304 : le document n’a pas été modifié depuis la dernière fois (cf. champ ‘if-modified-since’)
  • 305 : redirection vers un proxy spécifié par l’entête
  • 307 : redirection temporaire
  • 310 : trop de redirections (en général boucle de redirections)

Codes 4xx

  • 400 : erreur de syntaxe dans l’adresse du document
  • 401 : pas d’autorisation d’accès au document
  • 402 : accès au document soumis au paiement
  • 403 : accès au serveur refusé (contrairement à l’erreur 401, s’authentifier ne fera aucune différence)
  • 404 : la page demandée n’existe pas.
    • Attention, Google reviendra souvent la crawler à nouveau pour voir si elle est de nouveau accessible. Si vous souhaitez désindexer une page, suivez plutôt mon tuto.
    • Je vous conseille d’avoir une page d’erreur 404 personnalisée qui reprend le design de votre site, avec le modèle de page par défaut. Vérifiez bien qu’une URL qui n’existe pas renvoie bien un code 404 et rien d’autre (pas de 200, pas de 302 vers une 200, etc.).
    • Search Console peut vous aider à identifier et corriger des erreurs 404
    • Ce n’est pas la même chose qu’une Soft 404
  • 405 : méthode de requête du formulaire non autorisée
  • 406 : requête non acceptée par le serveur (la ressource demandée n’est pas disponible dans un format qui respecterait les en-têtes « Accept » de la requête)
  • 407 : autorisation du proxy nécessaire
  • 408 : temps d’accès à la page demandée expiré
  • 409 : l’utilisateur doit soumettre à nouveau avec plus d’infos
  • 410 : cette ressource n’est plus disponible (et aucune adresse de redirection n’est fournie)
    • Google indique traiter ce cas exactement comme une 404
  • 411 : le server a refusé la requête car elle n’a pas de longueur
  • 412 : la précondition donnée dans la requête a échoué
  • 413 : l’entité de la requête était trop grande
  • 414 : l’URI de la requête était trop longue
  • 415 : type de média non géré
  • 416 : champs d’en-tête de requête « range » incorrect
  • 417 : comportement attendu et défini dans l’en-tête de la requête insatisfaisante
  • 418 : teapot : « Je suis une théière ». Ce code est défini dans la RFC 2324 datée du premier avril 1998
  • 421 : la requête a été envoyée à un serveur qui n’est pas capable de produire une réponse (par exemple, car une connexion a été réutilisée)
  • 450 : les outils de contrôle parental de Windows sont activés et bloquent l’accès à la page
  • 451 : la ressource demandée est inaccessible pour des raisons légales

Codes 5xx

  • 500 : erreur interne du serveur
  • 501 : fonctionnalité réclamée non supportée par le serveur
  • 502 : mauvaise passerelle d’accès
  • 503 : service non disponible ou en maintenance. C’est ce qu’il faut renvoyer pour toutes les URL de votre site qui sont en maintenance. Tout autre code renvoyé à ce moment peut dégrader votre référencement. Indispensable à un moment donné pendant une refonte.
  • 504 : temps d’accès à la passerelle expiré
  • 505 : version HTTP non gérée
  • 509 : utilisé par de nombreux serveurs pour indiquer un dépassement de quota

S’il manque quelque chose ou que tout n’est pas clair, posez votre question dans les commentaires !

La même liste en anglais :

  • 200 : request completed
  • 201 : object created, reason = new URI
  • 202 : async completion (TBS)
  • 203 : partial completion
  • 204 : no info to return
  • 205 : request completed, but clear form
  • 206 : partial GET furfilled
  • 300 : server couldn’t decide what to return
  • 301 : object permanently moved
  • 302 : object temporarily moved
  • 303 : redirection w/ new access method
  • 304 : if-modified-since was not modified
  • 305 : redirection to proxy, location header specifies proxy to use
  • 307 : HTTP/1.1: keep same verb
  • 400 : invalid syntax
  • 401 : access denied
  • 402 : payment required
  • 403 : request forbidden
  • 404 : object not found
  • 405 : method is not allowed
  • 406 : no response acceptable to client found
  • 407 : proxy authentication required
  • 408 : server timed out waiting for request
  • 409 : user should resubmit with more info
  • 410 : the resource is no longer available
  • 411 : the server refused to accept request w/o a length
  • 412 : precondition given in request failed
  • 413 : request entity was too large
  • 414 : request URI too long
  • 415 : unsupported media type
  • 500 : internal server error
  • 501 : required not supported
  • 502 : error response received from gateway
  • 503 : temporarily overloaded
  • 504 : timed out waiting for gateway
  • 505 : HTTP version not supported

S’il manque quelque chose ou que tout n’est pas clair, posez votre question dans les commentaires !

Résumé : quel code renvoyer en fonction des cas ?

Je vais reprendre les explications sous un angle encore plus pratique.

Quand tout va bien :-)

Si la page existe et qu’elle est effectivement accessible, il faut bien entendu renvoyer un code 200.

Redirections

Si une page a changé d’adresse (URL), voici le code à renvoyer :

  • 301 si la page a définitivement changé d’adresse. En théorie, il s’agit réellement d’un changement d’adresse, par exemple suite à la mise en place de la réécriture d’URL ou à un changement dans l’arborescence des répertoires. En pratique, on l’utilise aussi parfois pour rediriger une page qui a disparu vers une autre page du site, a priori une des plus pertinentes pour ne pas perturber l’internaute ; l’intérêt est de continuer de profiter des backlinks de cette page.
  • 302 si la page a temporairement changé d’adresse. Là aussi, en théorie cela ne doit concerner que les cas où une page est disponible à une autre adresse que celle de d’habitude. C’est-à-dire que cela ne devrait pas être utilisé pour rediriger vers une autre page. Ce type de redirection est en général mal pris en compte par les moteurs, en particulier un lien par redirection 302 n’est pas pris en compte comme un backlink (alors que c’est le cas avec une 301) : il faut donc éviter d’inscrire votre site dans des annuaires qui font des liens par redirection 302. Dernier détail : des ingénieurs de Google ont précisé dans le forum Webmaster World qu’il ne faut utiliser le code 302 que pour le cas des pages dont le changement d’URL ne dure pas plus d’une semaine (si c’est plus long, ils recommandent la redirection 301).
  • 304 si la page n’a pas changé (depuis la dernier crawl de Google notamment). Dans ce cas, Googlebot (le robot de Google) ne viendra pas crawler à nouveau la page, ce qui économisera de la bande passante (à votre site et à Google) et pourra éventuellement en laisser plus pour le crawl des autres pages du site.

Erreurs

Si une page n’existe pas ou plus, voici le code à renvoyer :

  • 404 si la page n’existe pas. Attention, il ne faut pas que votre site renvoie autre chose qu’un code 404 pour les pages qui n’existent pas, cela peut perturber un certain nombre d’outils, dont les Outils Google pour Webmasters. Enfin, sachez que l’analyse de vos erreurs 404 peut vous fournir des idées pour trouver des backlinks.
  • 410 si la page n’existe plus. C’est sans doute le meilleur code à renvoyer si vous voulez faire comprendre aux moteurs qu’une page qui existait jusqu’alors, n’existe plus et a été supprimée définitivement. Si vous renvoyez un code 404 à la place, il peut se passer de nombreux mois avant que les moteurs la suppriment de leur index (c’est flagrant avec Bing qui peut conserver pendant 6 mois des pages pourtant supprimées de votre site).

Nous avons dans le forum WebRankInfo une discussion à propos des codes HTTP adaptés aux pages supprimées.

Serveur surchargé ou en maintenance

Si votre serveur est en surcharge ou votre site en travaux, renvoyez un code 503. Il indique aux robots que votre site est temporairement inaccessible et qu’il faudra donc revenir peu après. Si vous connaissez la durée de cette maintenance, indiquez-la dans le code Retry-After de l’entête HTTP (à ne pas confondre avec la balise meta revisit-after qui n’a d’ailleurs jamais existé).

Cet article vous a-t-il plu ?

Note : 5.0 (2 votes)
Cliquez pour voter !

Laisser un commentaire

Remarques :

  • Si vous souhaitez poser une question ou détailler un problème technique, il ne faut pas utiliser le formulaire ci-dessous qui est réservé aux avis. Posez votre question directement dans le forum Gmail de WebRankInfo. L'inscription est gratuite et immédiate.

  • En postant un avis, vous acceptez les CGU du site WebRankInfo. Si votre avis ne respecte pas ces règles, il pourra être refusé. Si vous indiquez votre adresse email, vous serez informé dès que votre avis aura été validé (ou refusé...) ; votre adresse ne sera pas utilisée pour vous envoyer des mailings et ne sera pas revendue ou cédée à des tiers.

5 commentaires

Nicolas F.

Je me permet d’ajouter l’outil indispensable pour les entêtes HTTP : LiveHTTPHeader, extension pour Firefox : addons.mozilla.org/fr/fir…

Répondre
Sun Location

Les codes HTTP sont très important si on veux pas perdre le positionnement ou l’indexation de ses pages lors d’un changement de nom de domaine par exemple…

Répondre
Nicolas

Bonjour, je rajouterais l’entête 307 en HTTP/1.1 pour le déplacement temporaire, et rappellerais également que ce protocole ne permet pas que de donner le statut d’un document mais aussi de donner une instruction sur la configuration de restitution du document. Ainsi, Expires, If-Modified-Since, Content-Type, Content-Language sont à correctement implémenter.

Répondre
tryzer

Je ne comprends pas trop le sujet mais bon on a toujours besoin de rappel ;-)

Répondre
NicolasP

Le code 404 étant très important!

Répondre