421 votes

Redirection HTTP : 301 (permanent) vs. 302 (temporaire)

Le client est-il censé se comporter différemment ? Comment ?

0 votes

RFC 2616 - Codes d'état HTTP Je pourrais répéter tout ce qui est écrit là, mais c'est assez clair ;)

2 votes

Il convient de noter que la spécification prévoit également des codes de statut 303 et 307 pour des redirections temporaires plus nuancées.

0 votes

Les 303 et 307 ne sont plus vraiment nécessaires. 303 était censé spécifier que la nouvelle URL est liée mais pas équivalente, et devrait être chargée avec GET même si la requête actuelle était POST, mais les navigateurs font aussi cela avec 302 de toute façon. La 307 était censée spécifier explicitement que la redirection est temporaire, contrairement à la 302 qui ne spécifiait pas si elle était temporaire, mais les navigateurs et les crawlers traitent la 302 comme temporaire de toute façon.

620voto

Philippe Leybaert Points 62715

Le statut 301 signifie que la ressource (page) est déplacée de façon permanente vers un nouvel emplacement. Le client/navigateur ne doit pas essayer de demander l'emplacement original, mais utiliser le nouvel emplacement à partir de maintenant.

Le statut 302 signifie que la ressource est temporairement située ailleurs, et que le client/navigateur doit continuer à demander l'url d'origine.

17 votes

Merci. Cela signifie-t-il que si j'utilise une redirection 301 (permanente), le client peut décider de ne plus jamais récupérer l'ancien emplacement et de toujours utiliser directement la nouvelle URL ?

22 votes

Exactement ! En fait, selon les spécifications, le client devrait toujours aller au nouvel emplacement.

2 votes

Cela a-t-il un effet sur la mémorisation par les moteurs de recherche de certaines pages de votre site qui ne sont plus liées ?

114voto

Rohit Points 335

Lorsqu'un moteur de recherche trouve le code de statut 301 dans l'en-tête de réponse d'une page web, il comprend que cette page web n'existe plus, il recherche l'en-tête de localisation dans la réponse, prend la nouvelle URL et remplace l'URL indexée par la nouvelle et transfère également le pagerank.

Le moteur de recherche rafraîchit donc toutes les URL indexées qui n'existent plus (301 found) avec la nouvelle URL, ce qui permet de conserver le trafic et le pagerank de votre ancienne page web et de le détourner vers la nouvelle (vous ne perdrez pas le trafic de votre ancienne page web).

Navigateur : si un navigateur trouve le code d'état 301, il met en cache le mappage de l'ancienne URL avec la nouvelle URL, le client/navigateur ne tentera pas de demander l'emplacement original mais utilisera le nouvel emplacement à partir de maintenant, à moins que le cache ne soit effacé.

enter image description here

Lorsqu'une araignée de moteur de recherche trouve le statut 302 pour une page web, elle ne fait que rediriger temporairement vers le nouvel emplacement et explorer les deux pages. L'ancienne URL de la page Web existe toujours dans la base de données du moteur de recherche, qui tente toujours de demander l'ancien emplacement et de l'explorer. Le client/navigateur tentera toujours de demander l'emplacement original.

enter image description here

Pour en savoir plus sur la façon de l'implémenter en asp.net c# et sur l'impact sur les moteurs de recherche, cliquez ici. http://www.dotnetbull.com/2013/08/301-permanent-vs-302-temporary-status-code-aspnet-csharp-Implementation.html

36voto

Residuum Points 6345

Le choix entre 301 et 302 est important pour l'indexation dans les moteurs de recherche, car leurs robots d'exploration en tiennent compte et transfèrent le PageRank lorsqu'ils utilisent 301.

Ver La réponse de Peter Lee pour plus de détails.

23voto

Peter Lee Points 143

301 est que la ressource demandée s'est vue attribuer un nouvel URI permanent et que toute référence future à cette ressource doit être faite en utilisant l'un des URI renvoyés.

302 est que la ressource demandée réside temporairement sous un autre URI.

Étant donné que la redirection peut être modifiée à l'occasion, le client doit continuer à utiliser le Request-URI pour les demandes futures.

Cette réponse n'est cachable que si elle est indiquée par un champ d'en-tête Cache-Control ou Expires.

1 votes

Le 301 est donc logique, mais j'ai du mal à trouver un bon exemple d'utilisation pour le 302 .

4 votes

@BobStein-VisiBone pour l'exemple de la redirection 302 : créer un fichier old.php avec le code <?php header("location: http://example.com/new.php"); ?> et le fichier new.php - <?php echo 'I am new'; ?> et aller à la enlace . Il redirigera et affichera le texte "Je suis nouveau". Ensuite, remplacez le code dans old.php par <?php echo 'I am old'; ?> et aller également à la enlace . Vous verrez apparaître le texte "Je suis vieux". Si vous aviez effectué la redirection 301 dans old.php, vous auriez vu le texte "Je suis nouveau" même après les changements dans le code de old.php.

3 votes

@BobStein-VisiBone J'ai une page qui est dépréciée et ne peut pas être affichée. Nous devons créer une nouvelle page, mais elle ne sera pas prête avant un certain temps. Nous utilisons une redirection temporaire vers une page existante qui nous est utile pour les visiteurs. Une fois la nouvelle page créée, nous utiliserons une redirection permanente vers celle-ci.

5voto

Tiemen Points 472

RFC 2616 - Codes d'état HTTP

Je pourrais répéter tout ce qui est écrit là, mais c'est assez clair ;)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X