300 Multiple Choices : une URL, plusieurs versions

300 Multiple Choices indique qu’une ressource existe en plusieurs versions et que le client doit en choisir une ; rarement utilisé aujourd’hui.

Vérifier le code d’état d’une URL

300 Multiple Choices indique que la ressource demandée existe en plusieurs versions (formats, langues ou variantes différents) et que le client doit en choisir une. C’est l’un des codes de statut les moins utilisés du web, et pour la plupart des sites, il existe un meilleur outil pour y parvenir.

Définition

La RFC 9110, section 15.4.1 décrit le 300 comme une façon d’offrir à l’utilisateur ou à son agent un choix entre plusieurs représentations, chacune ayant son URL plus spécifique. On parle de négociation réactive. Si le serveur a un choix préféré, il doit le désigner dans un en-tête Location, qu’un navigateur peut suivre automatiquement. Le corps devrait lister les alternatives, mais HTTP ne définit aucun format standard pour cette liste : les clients gèrent donc le 300 de façon inégale. Un 300 est mis en cache par défaut.

Où il apparaît

  • Certaines configurations de négociation de contenu qui ne parviennent pas à choisir seules une variante.
  • Des API spécialisées et des archives qui exposent plusieurs formats d’un même document.
  • Des serveurs ou des extensions mal configurés, ce qui est la raison la plus probable d’en trouver un lors d’un audit.

Impact SEO

La documentation de Google explique comment Googlebot traite les codes 301, 302, 303, 304, 307 et 308, mais ne dit rien de précis sur le 300. Impossible de prévoir quelle URL, le cas échéant, finirait indexée, et cela suffit à l’éviter pour des pages publiques.

Pour le cas d’usage habituel, les versions par langue ou par région, Google recommande une URL distincte pour chaque version, reliées par hreflang, et déconseille de rediriger automatiquement les visiteurs selon la langue qu’il leur suppose. Une page de sélection de langue peut renvoyer 200 et être déclarée comme x-default. Pour une page déplacée, utilisez 301 ; pour un détour temporaire, 302.

Comment vérifier

Suivez l’URL avec le vérificateur de redirections pour voir son statut et son éventuel en-tête Location, et validez votre configuration linguistique avec le vérificateur hreflang. Une réponse 300 ressemble à ceci :

HTTP/1.1 300 Multiple Choices
Location: https://www.example.com/report.html
Content-Type: text/html; charset=utf-8

<ul>
  <li><a href="/report.html">HTML version</a></li>
  <li><a href="/report.pdf">PDF version</a></li>
</ul>

Questions fréquentes

Les navigateurs suivent-ils automatiquement une redirection 300 ?

Ils le peuvent, si la réponse comprend un en-tête Location avec le choix préféré. Sans lui, le visiteur voit la liste d’options que le serveur a envoyée dans le corps.

Dois-je utiliser le 300 pour les versions linguistiques de mon site ?

Non. Donnez à chaque langue sa propre URL, reliez-les avec hreflang et laissez les visiteurs changer de langue eux-mêmes. Google déconseille les redirections automatiques selon la langue.

Comment Google traite-t-il un code de statut 300 ?

La documentation de Google sur les codes de statut ne décrit pas le 300 : son traitement n’est donc pas prévisible. Utilisez 301 ou 308 pour les déplacements permanents, et 302 ou 307 pour les temporaires.