web-dev-qa-db-fra.com

Un statut HTTP 400 peut-il remplacer un 410?

Alors que de nombreuses URL sur mon site passaient de non amicales à amicales, je suis tombé sur une ancienne URL utilisée pour tester que Google avait fini par analyser, mais je n'utilise plus cette URL. C'est sous la forme peu amicale comme ceci:

http://example.com/something.php?something=something&

Auparavant, cette URL correspondait à une autre sur mon site et pour la rectifier, je devais changer le code d'état (et faire en sorte que l'URL ne renvoie pas de page Web réelle). Au début, je pensais utiliser le code 410 pour indiquer que vous alliez sur Google, mais maintenant je pensais que le statut http 400 était préférable, car toutes mes autres URL "propres" ne contiennent jamais de & et que le statut http 400 correspond à une requête malformée.

Est-ce une pratique acceptable? ou devrais-je simplement le convertir en statut HTTP 410? Que penseraient les moteurs de recherche de cette pratique? (J'essaie juste de suivre les normes ici)

7
Mike

Pourquoi 410 partis?

Étant donné que la page existait déjà, le retour de l'état correct de l'en-tête serait 410 disparus , ce qui permettra à Google et aux autres moteurs de recherche de supprimer la page de son index. Vous devez éviter d'utiliser status 400 bad request car cela implique que le serveur n'a pas compris la requête en raison d'une syntaxe mal formée. L'utilisation de codes d'état indésirables remplira vos journaux d'erreurs et rendra plus difficile la recherche des erreurs sur des problèmes réels.

Qu'en est-il de 404?

Utiliser un état 404 ou 410 est considéré comme correct, cependant… si vous savez que la page ne revient jamais, il est préférable d’utiliser un état 410 parti. Google a indiqué qu'ils traitaient le résultat de 404 et 410 de la même manière, mais que 410 est abandonné plus rapidement car 404 peuvent survenir sans intention.

27
Simon Hayter

Officiellement, oui. Tout statut 4xx peut être interprété comme 400; il en va de même pour les autres groupes de statut. (Par exemple, une erreur d'indisponibilité du service 503 peut être interprétée comme une erreur de serveur interne 500).

La RFC est écrite de cette manière pour permettre des implémentations ne prenant pas en charge tous les statuts, ainsi que pour permettre la définition de codes de statuts supplémentaires sans rupture de la compatibilité ascendante.

Donc oui, vous pouvez en utiliser 400 au lieu de 410. Cependant, vous devriez utilisez le statut le plus précis à votre disposition pour décrire le statut actuel; si la ressource a disparu, ne revient jamais et ne peut (à votre connaissance) être trouvée nulle part ailleurs, 410 est le statut approprié. J'utiliserais probablement 404 avant 400.

La référence pour ce comportement est RFC 7231 (HTTP 1.1: Sémantique et contenu), Section 6 . (Notez que RFC 7231 et autres remplacent RFC 2616 .)

14
Calrion

Une demande mal formée ne signifie pas "une URL pour laquelle vous n'avez pas de ressource". Cela signifie demande malformée. HTTP 400 est vraiment faux ici.

HTTP 410 fonctionne bien car il indique qu’une ressource auparavant accessible ne l’est plus.

Votre alternative, comme d'autres l'ont mentionné, serait un 404.

2