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

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

    L’état 301 signifie que la ressource (page) est déplacée de manière permanente vers un nouvel emplacement. Le client / navigateur ne doit pas tenter de demander l’emplacement d’origine mais utiliser le nouvel emplacement à partir de maintenant.

    L’état 302 signifie que la ressource est temporairement située ailleurs et que le client / navigateur doit continuer à demander l’URL d’origine.

    Lorsqu’une araignée de moteur de recherche trouve le code de statut 301 dans l’en-tête de réponse d’une page Web, elle comprend que cette page n’existe plus, elle recherche l’en-tête de lieu, choisit la nouvelle URL et remplace l’URL indexée par la nouvelle. .

    Ainsi, le moteur de recherche rafraîchit toutes les URL indexées qui n’existent plus (301 trouvées) avec la nouvelle URL, cela conservera votre ancien trafic de page Web, pagerank et le redirecta vers le nouveau (vous ne perdrez pas le trafic de l’ancienne page Web).

    Navigateur: si un navigateur détecte le code d’état 301, il met en cache le mappage de l’ancienne URL avec la nouvelle URL. Le client / navigateur n’essaiera pas de demander l’emplacement d’origine, mais utilisera désormais le nouvel emplacement à moins que le cache ne soit effacé.

    entrer la description de l'image ici

    Lorsqu’un moteur de recherche trouve le statut 302 pour une page Web, il ne redirecta que temporairement vers le nouvel emplacement et parsingra les deux pages. L’ancienne URL de la page Web existe toujours dans la firebase database du moteur de recherche et tente toujours de demander l’ancien emplacement et de l’explorer. Le client / navigateur tentera toujours de demander l’emplacement d’origine.

    entrer la description de l'image ici

    En savoir plus sur la façon de l’implémenter dans asp.net c # et quel est l’impact sur les moteurs de recherche – http://www.dotnetbull.com/2013/08/301-permanent-vs-302-temporary-status-code-aspnet -csharp-Implementation.html

    La plupart du temps, 301 vs 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.

    Voir la réponse de Peter Lee pour plus de détails.

    301 est que la ressource demandée a reçu un nouvel URI permanent et que toute référence future à cette ressource DEVRAIT être effectuée en utilisant l’un des URI renvoyés. 302 est que la ressource demandée réside temporairement sous un URI différent. Comme la redirection peut être modifiée à l’occasion, le client DEVRAIT continuer à utiliser l’URI de demande pour les demandes futures. Cette réponse est uniquement cachable si elle est indiquée par un champ d’en-tête Cache-Control ou Expires.

    Les redirections 301 sont mises en cache indéfiniment (au moins par certains navigateurs).

    Cela signifie que si vous configurez un 301, visitez cette page, non seulement vous êtes redirigé, mais cette redirection est mise en cache.

    Lorsque vous visitez à nouveau cette page, votre navigateur * ne prend même pas la peine de demander cette URL, elle va juste à la cible de redirection mise en cache.

    La seule façon d’annuler un 301 pour un visiteur avec cette redirection dans le cache est de redirect vers l’URL d’origine **. Dans ce cas, le navigateur remarquera la boucle et demandera finalement l’URL saisie.

    Évidemment, ce n’est pas une option si vous avez décidé de 301 pour Facebook ou toute autre ressource que vous ne maîsortingsez pas complètement.

    Malheureusement, de nombreux fournisseurs d’hébergement proposent une fonctionnalité dans leur interface d’administration appelée simplement “Redirection”, qui effectue une redirection 301. Si vous utilisez ceci pour redirect temporairement votre domaine vers Facebook en tant que page à venir, vous êtes fondamentalement foutu.

    * au moins Chrome et Firefox, selon combien de temps les navigateurs mettent-ils en cache les HTTP 301? . Il suffit de l’essayer avec Chrome 45. Edit: Safari 7.0.6 sur Mac cache également, un redémarrage du navigateur n’a pas aidé (Link dit que sous Safari 5 sous Windows, cela aide.)

    ** J’ai essayé javascript window.location = '' , car ce serait la solution qui pourrait être appliquée dans la plupart des cas – ça ne marche pas. Il en résulte une boucle infinie non détectée. Cependant, l’en- header('Location: new.url') php header('Location: new.url') ne fait pas la boucle

    Bottom Line: n’utilisez que 301s si vous êtes absolument certain de ne plus jamais utiliser cette URL. Généralement jamais sur le répertoire racine (example.com/)

    Le principal problème avec 301 est que le navigateur mettra en cache la redirection même si vous avez désactivé la redirection au niveau du serveur.

    Il est toujours préférable d’utiliser 302 si vous activez la redirection pour une fenêtre de maintenance courte.