In Ermangelung von Cache-Steuerungsanweisungen, die etwas anderes vorschreiben, wird eine 301-Weiterleitung standardmäßig ohne Ablaufdatum zwischengespeichert.
Das heißt, sie bleibt so lange im Cache, wie der Browser sie aufnehmen kann. Sie wird aus dem Cache entfernt, wenn Sie den Cache manuell löschen oder wenn die Cache-Einträge geleert werden, um Platz für neue Einträge zu schaffen.
Sie können dies zumindest in Firefox überprüfen, indem Sie zu about:cache
und unter Festplatten-Cache zu finden. Das funktioniert auch in anderen Browsern wie Chrome und dem auf Chromium basierenden Edge, obwohl diese keine about:cache
um den Cache zu inspizieren.
In allen Browsern ist es möglich, dieses Standardverhalten mit Hilfe von Caching-Direktiven außer Kraft zu setzen, wie unten beschrieben:
Wenn Sie nicht möchten, dass die Weiterleitung zwischengespeichert wird
Diese unbestimmte Zwischenspeicherung ist nur die Standard Zwischenspeicherung durch diese Browser, wenn keine anderslautenden Header vorhanden sind. Die Logik besteht darin, dass Sie eine "permanente" Weiterleitung angeben und keine weiteren Anweisungen für die Zwischenspeicherung geben, so dass sie so behandelt werden, als ob Sie eine unbegrenzte Zwischenspeicherung wünschen.
Die Browser berücksichtigen die Header Cache-Control und Expires wie bei jeder anderen Antwort, sofern sie angegeben sind.
Sie können Kopfzeilen hinzufügen wie Cache-Control: max-age=3600
ou Expires: Thu, 01 Dec 2014 16:00:00 GMT
zu Ihren 301-Weiterleitungen. Sie könnten sogar hinzufügen Cache-Control: no-cache
damit sie nicht dauerhaft vom Browser zwischengespeichert werden oder Cache-Control: no-store
Sie kann also nicht einmal vom Browser zwischengespeichert werden.
Wenn Sie jedoch nicht wollen, dass Ihre Weiterleitung dauerhaft ist, ist es vielleicht besser, eine 302- oder 307-Weiterleitung zu verwenden. Eine 301-Weiterleitung auszustellen, sie aber als nicht cachefähig zu markieren, verstößt gegen die Geist wofür eine 301-Weiterleitung gedacht ist, auch wenn sie technisch gesehen gültig ist. YMMV, und Sie können Randfälle finden, in denen es für eine "permanente" Weiterleitung sinnvoll ist, eine Zeitbegrenzung zu haben. Beachten Sie, dass 302- und 307-Weiterleitungen von den Browsern standardmäßig nicht zwischengespeichert werden.
Wenn Sie zuvor eine 301-Weiterleitung eingerichtet haben, diese aber wieder rückgängig machen möchten
Wenn die Besucher die 301-Weiterleitung noch in ihrem Browser gespeichert haben, werden sie weiterhin auf die Zielseite weitergeleitet, unabhängig davon, ob die Quellseite noch die Weiterleitung enthält. Sie haben folgende Möglichkeiten, dies zu beheben:
-
Eine einfache Lösung besteht darin, eine weitere Umleitung zurückzuschicken.
Wenn der Browser während einer Weiterleitung ein zweites Mal auf dieselbe URL verwiesen wird, sollte er sie erneut vom Ursprung abrufen, anstatt sie erneut aus dem Cache umzuleiten, um eine Weiterleitungsschleife zu vermeiden. Aus den Kommentaren zu dieser Antwort geht hervor, dass dies jetzt in allen gängigen Browsern funktioniert - aber es kann sein, dass es bei einigen kleineren Browsern nicht funktioniert.
-
Wenn Sie keine Kontrolle über die Website haben, auf die das vorherige Weiterleitungsziel verweist, haben Sie Pech gehabt. Versuchen Sie, den Eigentümer der Website zu bitten, auf Sie umzuleiten.
Vorbeugen ist besser als heilen - vermeiden Sie eine 301-Weiterleitung, wenn Sie nicht sicher sind, dass Sie die alte URL dauerhaft außer Betrieb nehmen wollen.
21 Stimmen
Bitte sagen Sie Chrome, dass wir einen Ausweg aus diesem 301-Höllenloch brauchen: bugs.chromium.org/p/chromium/issues/
0 Stimmen
@BT Da das Problem alle Browser betrifft, kann es eigentlich nur von der IETF gelöst werden, wahrscheinlich durch die Festlegung eines obligatorischen Timeouts für zwischengespeicherte 301er, die keine TTL haben, so dass die Browser ihre zwischengespeicherten Annahmen schließlich erneut überprüfen.
2 Stimmen
Ich habe auf der IETF-Mailingliste eine Diskussion darüber begonnen, falls sich jemand, der dieses Thema noch verfolgt, einbringen möchte: lists.w3.org/Archives/Public/ietf-http-wg/2017OctDec/0363.html