Le client est-il censé se comporter différemment? Comment?
Le client est-il censé se comporter différemment? Comment?
Réponses:
Le statut 301 signifie que la ressource (page) est déplacée définitivement 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.
Le statut 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 d'état 301 dans l'en-tête de réponse d'une page Web, elle comprend que cette page Web n'existe plus, elle recherche l'en-tête d'emplacement en réponse, choisissez la nouvelle URL et remplacez l'URL indexée par la nouvelle et transférez également le pagerank .
Ainsi, le moteur de recherche actualise toutes les URL indexées qui n'existent plus (301 trouvées) avec la nouvelle URL, cela conservera votre ancien trafic de page Web, votre pagerank et le détournera 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 d'origine, mais utilisera désormais le nouvel emplacement, sauf si le cache est effacé.
Lorsqu'un moteur de recherche araignée trouve le statut 302 d'une page Web, il ne redirige que temporairement vers le nouvel emplacement et explore les deux pages. L'ancienne URL de la page Web existe toujours dans la base de données du moteur de recherche et elle tente toujours de demander l'ancien emplacement et de l'explorer. Le client / navigateur tentera toujours de demander l'emplacement d'origine.
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 s'est vu attribuer un nouvel URI permanent et toute référence future à cette ressource doit être effectuée à l'aide de l'un des URI retournés.
302 est que la ressource demandée réside temporairement sous un URI différent.
Étant donné que la redirection peut être modifiée à l'occasion, le client doit continuer à utiliser l'URI de demande 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.
<?php header("location: http://example.com/new.php"); ?>
et le fichier new.php - <?php echo 'I am new'; ?>
et allez sur le lien . Il redirigera et affichera le texte "Je suis nouveau". Remplacez ensuite le code dans old.php to <?php echo 'I am old'; ?>
et accédez également au lien . Vous verrez le texte "Je suis vieux". Si vous avez 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.
webcomic.com/latest
et redirige vers webcomic.com/some-comic-title
avec un 301, le navigateur redirigera toujours vers "some-comic-title". Même lorsque la prochaine bande dessinée a été publiée et que "latest" est désormais redirigé vers "another-comic-title" ... C'est là qu'une 302 serait mieux.
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, il va simplement à 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 rediriger vers l'URL d'origine **. Dans ce cas, le navigateur remarquera la boucle et demandera finalement vraiment l'URL saisie.
De toute évidence, ce n'est pas une option si vous avez décidé de 301 sur Facebook ou toute autre ressource que vous n'êtes pas complètement sous contrôle.
Malheureusement, de nombreux hébergeurs proposent une fonctionnalité dans leur interface d'administration appelée simplement "Redirection", qui effectue une redirection 301. Si vous l'utilisez pour rediriger temporairement votre domaine vers Facebook en tant que page à venir, vous êtes essentiellement foutu.
* au moins Chrome et Firefox, selon combien de temps les navigateurs mettent-ils en cache HTTP 301? . Je viens de l'essayer avec Chrome 45. Edit: Safari 7.0.6 sur Mac met également en cache, un redémarrage du navigateur n'a pas aidé (Link dit que sur Safari 5 sur Windows, cela aide.)
** J'ai essayé javascript window.location = ''
, car ce serait la solution qui pourrait être appliquée dans la plupart des cas - cela ne fonctionne pas. Il en résulte une boucle infinie non détectée. Cependant, php header('Location: new.url')
rompt la boucle
Conclusion : n'utilisez 301 que si vous êtes absolument sûr 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 à partir du niveau du serveur.
Il est toujours préférable d'utiliser 302 si vous activez la redirection pour une courte fenêtre de maintenance.