Quel est le moyen d'échec correct lorsque l'utilisateur fournit une valeur incorrecte ou non applicable pour un paramètre de requête?
Un exemple de paramètre de requête non applicable serait un order=123
où order=desc
ou order=asc
sont censés décider de la manière d'imprimer une liste. Donner une valeur non-date à un paramètre qui attend une date formatée pourrait être un autre exemple.
Normalement, les sites agissent simplement comme si la valeur par défaut était donnée, mais cela pourrait poser un problème si quelqu'un se connecte à mon site avec une valeur de paramètre de requête incorrecte et que les moteurs de recherche commencent à l'indexer.
Pour l'UX, il est préférable d'utiliser simplement les valeurs par défaut. Votre cas semble assez rare. Cela a-t-il été un réel problème dans certains cas?
Une solution originale pourrait être la solution 301 moved permanently
qui pointe vers l'URL avec la valeur par défaut. Qui serait
406 serait incorrect, car la norme définit (mine Emphasis):
La ressource identifiée par la requête est uniquement capable de générer des entités de réponse dont les caractéristiques de contenu ne sont pas acceptables selon les en-têtes d'acceptation envoyées dans la requête.
Donc, non, 406 concerne uniquement l'en-tête d'acceptation, pas les paramètres de requête ou quoi que ce soit d'autre.
Cela dépend de la situation et de la cause de la valeur incorrecte, et il n’existe pas vraiment de solution miracle pour le paramètre de chaîne de requête incorrect.
Dans votre exemple, j'utiliserais 400, car entrer 123 pour commande est une valeur tout à fait inappropriée, mais si le paramètre de requête était incorrect à partir d'un ancien lien pointant toujours sur mon site après avoir modifié la structure de la chaîne de requête, je serais plus enclins à un 301.
Je dirais d'évaluer la cause de la même manière que pour une structure d'URL normale et de ne pas accorder de traitement spécial aux paramètres de la chaîne de requête.
En supposant que la valeur par défaut n'est pas mauvaise. Vous pouvez gérer les moteurs de recherche de plusieurs manières:
/page.html?order=desc
: /page.html
/page.html?order=
/page.html?order=123
order
. Toutes vos versions de la page pourraient avoir cela dans le <head>
: <link rel="canonical" href="https://example.com/page.html">
order
. Ensuite, lorsque Goooglebot rencontre plusieurs URL qui diffèrent uniquement par ce paramètre, il analyse et n'indexe qu'une seule URL représentative (de son choix) plutôt que toutes. Ce paramètre se trouve sous "Explorer" -> "Paramètres d’URL". Voici la documentation à ce sujet.Je n'utiliserais aucun code d'état 4xx pour cette situation. Utilisez les redirections 301 ou utilisez les outils fournis par les moteurs de recherche.