Au moins deux navigateurs - Chrome et Firefox - mettront en cache une redirection 301 sans date d'expiration .
Autrement dit, il restera mis en cache aussi longtemps que le cache du navigateur pourra le contenir. Il sera supprimé du cache si vous videz manuellement le cache ou si les entrées du cache sont purgées pour faire de la place pour les nouvelles.
Vous pouvez le vérifier au moins dans Firefox en allant about:cache
dans le cache disque et en le trouvant.
Je ne connais pas le comportement d'autres navigateurs, tels que IE10 / IE11. Cependant, étant donné que d'autres navigateurs le mettent en cache indéfiniment, vous devrez quand même vous en occuper.
Dans tous les navigateurs, y compris Chrome / Firefox, il est toujours possible de remplacer ce comportement par défaut à l'aide des en-têtes, comme décrit ci-dessous:
Remarque: cette réponse a été écrite en 2014 et le comportement du navigateur peut changer au fil du temps.
Si vous ne souhaitez pas que la redirection soit mise en cache
Cette mise en cache indéfinie n'est que la mise en cache par défaut de ces navigateurs en l'absence d'en-têtes Cache-Control. La logique est que vous spécifiez une redirection "permanente" et que vous ne leur donnez aucune autre instruction de mise en cache, donc ils la traiteront comme si vous vouliez la mettre en cache indéfiniment.
Les navigateurs honorent toujours les en-têtes Cache-Control et Expires comme avec toute autre réponse, s'ils sont spécifiés.
Vous pouvez ajouter des en-têtes tels que Cache-Control: max-age=3600
ou Expires: Thu, 01 Dec 2014 16:00:00 GMT
à vos redirections 301. Vous pouvez même ajouter Cache-Control: no-cache
afin qu'il ne soit pas mis en cache en permanence par le navigateur ou Cache-Control: no-store
qu'il ne puisse même pas être stocké dans un stockage temporaire par le navigateur.
Une meilleure alternative à mon avis, cependant, consiste à utiliser une redirection 302 ou 307. Ceux-ci n'impliquent pas pour les navigateurs ou les caches qu'il s'agit de redirections "permanentes" et ne doivent donc pas être mis en cache en l'absence des en-têtes Cache-Control.
Pour moi, cela semble émettre une redirection 301, mais le marquer comme non-cache va à l'encontre de l' esprit de ce qu'est une redirection 301, même si elle peut être techniquement valide. YMMV, et vous pouvez trouver des cas limites où il est logique qu'une redirection "permanente" ait une limite de temps.
Si vous avez précédemment émis une redirection 301 mais que vous souhaitez annuler cette opération
Si les gens ont toujours la redirection 301 mise en cache dans leur navigateur, ils continueront d'être dirigés vers la page cible, que la page source ait toujours la redirection en place. Vos options pour résoudre ce problème incluent:
La solution la plus simple et la meilleure consiste à renvoyer une autre redirection 301.
Le navigateur se rendra compte qu'il est redirigé vers ce qu'il pensait précédemment être une URL déclassée, ce qui devrait le faire récupérer à nouveau cette URL pour confirmer que l'ancienne redirection n'est pas encore là.
Edit: certains commentaires jettent un doute là-dessus, voir ci-dessous.
Si vous ne contrôlez pas le site vers lequel la cible de redirection précédente est allée, vous avez de la chance. Essayez de demander au propriétaire du site de vous rediriger vers vous.
Aussi, mieux vaut prévenir que guérir - évitez une redirection 301 si vous n'êtes pas sûr de vouloir mettre définitivement hors service l'ancienne URL.