Mindestens zwei Browser - Chrome und Firefox - speichern eine 301-Weiterleitung ohne Ablaufdatum zwischen .
Das heißt, es bleibt so lange zwischengespeichert, wie der Cache des Browsers es aufnehmen kann. Es wird aus dem Cache entfernt, wenn Sie den Cache manuell leeren oder wenn die Cache-Einträge gelöscht werden, um Platz für neue zu schaffen.
Sie können dies zumindest in Firefox überprüfen, about:cache
indem Sie es im Festplatten-Cache aufrufen und suchen.
Ich weiß nichts über das Verhalten anderer Browser wie IE10 / IE11. Da andere Browser es jedoch auf unbestimmte Zeit zwischenspeichern, müssen Sie dies trotzdem berücksichtigen.
In allen Browsern, einschließlich Chrome / Firefox, ist es weiterhin möglich, dieses Standardverhalten mithilfe von Headern zu überschreiben, wie unten beschrieben:
Hinweis: Diese Antwort wurde 2014 geschrieben und das Verhalten des Browsers kann sich im Laufe der Zeit ändern.
Wenn Sie nicht möchten, dass die Umleitung zwischengespeichert wird
Dieses unbestimmte Caching ist nur das Standard- Caching dieser Browser, wenn keine Cache-Control-Header vorhanden sind. Die Logik ist, dass Sie eine "permanente" Umleitung angeben und ihnen keine anderen Caching-Anweisungen geben, sodass sie diese so behandeln, als ob Sie sie auf unbestimmte Zeit zwischengespeichert haben möchten.
Die Browser berücksichtigen weiterhin die Cache-Control- und Expires-Header wie bei jeder anderen Antwort, sofern sie angegeben sind.
Sie können Header wie Cache-Control: max-age=3600
oder Expires: Thu, 01 Dec 2014 16:00:00 GMT
zu Ihren 301-Weiterleitungen hinzufügen . Sie können sogar hinzufügen, Cache-Control: no-cache
damit es nicht dauerhaft vom Browser zwischengespeichert wird oder vom Browser Cache-Control: no-store
nicht einmal vorübergehend gespeichert werden kann.
Eine bessere Alternative ist meiner Meinung nach jedoch die Verwendung einer 302- oder 307-Umleitung. Diese bedeuten für Browser oder Caches nicht, dass es sich um "permanente" Weiterleitungen handelt, und sollten daher nicht zwischengespeichert werden, wenn keine Cache-Control-Header vorhanden sind.
Für mich scheint es, als würde eine 301-Weiterleitung ausgegeben, aber wenn sie als nicht zwischenspeicherbar markiert wird, widerspricht dies dem Geist einer 301-Weiterleitung, auch wenn sie technisch gültig sein kann. YMMV, und Sie können Randfälle finden, in denen es sinnvoll ist, dass eine "permanente" Umleitung ein Zeitlimit hat.
Wenn Sie zuvor eine 301-Umleitung ausgegeben haben, dies aber deaktivieren möchten
Wenn Benutzer die zwischengespeicherte 301-Weiterleitung noch in ihrem Browser haben, werden sie weiterhin zur Zielseite weitergeleitet, unabhängig davon, ob auf der Quellseite die Weiterleitung noch vorhanden ist. Ihre Optionen zur Behebung dieses Problems umfassen:
Die einfachste und beste Lösung besteht darin, eine weitere 301-Umleitung erneut auszugeben.
Der Browser erkennt, dass er zu einer zuvor nicht in Betrieb genommenen URL zurückgeleitet wird. Dies sollte dazu führen, dass diese URL erneut abgerufen wird, um zu bestätigen, dass die alte Weiterleitung noch nicht vorhanden ist.
Bearbeiten: Einige Kommentare werfen Zweifel auf, siehe unten.
Wenn Sie keine Kontrolle über die Site haben, zu der das vorherige Weiterleitungsziel gegangen ist, haben Sie kein Glück. Versuchen Sie, den Websitebesitzer zu bitten, zu Ihnen zurückzuleiten.
Auch Vorbeugen ist besser als Heilen - vermeiden Sie eine 301-Weiterleitung, wenn Sie nicht sicher sind, ob Sie die alte URL dauerhaft außer Betrieb setzen möchten.