Wie wird eine nicht zwischengespeicherte 301-Weiterleitung durchgeführt?

8

Vor einer Weile änderten alle Browser ihr Verhalten und begannen 301 Redirects zwischenzuspeichern. Ich würde gerne wissen, wie man eine 301 Weiterleitung macht, die nicht in PHP zwischengespeichert wird?

    
Timo Huovinen 30.08.2012, 08:12
quelle

3 Antworten

23

301 ist eine permanente Umleitung, daher ist Caching sinnvoll. Wenn die Weiterleitung nicht dauerhaft ist, verwenden Sie 307 (temporäre Weiterleitung), 302 (gefunden) oder 303 (siehe andere).

Hier für die entsprechenden Anwendungsfälle.

Um die Unterschiede zwischen diesen drei zu erläutern:

  • 307 ist die generische temporäre Weiterleitung für den Fall, dass eine Ressource verschoben wird. Beispielsweise könnte eine URL wie domain.com/news/latest eine 307-Weiterleitung zum neuesten Nachrichtenartikel domain.com/news/article-594873 durchführen. Da diese vorübergehende Weiterleitung für eine Weile bestehen bleiben kann (dieser Artikel kann für mehrere Stunden der letzte sein), können Browser die Weiterleitung zwischenspeichern. Um den Grad ihrer Verwendung zu steuern, verwenden Sie Cache-Steuerkopfzeilen.
  • 303 ist die Weiterleitung, die nicht gespeichert werden darf. Wenn Sie beispielsweise einen neuen Artikel an " domain.com/news " senden, wird möglicherweise ein neuer Nachrichtenartikel erstellt und eine 303-Weiterleitung an domain.com/news/article-978523 bereitgestellt. Da eine andere POST-Anfrage dazu führt, dass ein völlig anderer, neuer Artikel erstellt wird, kann er nicht zwischengespeichert werden.
  • 302 ist ein bisschen seltsam, ich habe es nie selbst benutzt. Anscheinend ist es eher ein Legacy-Ersatz für die 303, für frühere HTTP 1.0 Version Clients, die die 303 nicht verstehen.

Da Sie speziell nach PHP gefragt haben:

%Vor%

Sie können Agenten auch daran hindern, eine 301 zu cachen, wenn Sie müssen, indem Sie die obigen Cache-Control-Header wie folgt verwenden:

%Vor%

oder einfach hinzufügen

%Vor%     
Core Xii 30.08.2012, 08:18
quelle
5

Ein HTTP-Statuscode 301 ohne Zwischenspeicherung kann zur URL-Kanonisierung verwendet werden, während die Verfolgungsfunktionalität beibehalten wird.

Um zu verhindern, dass eine 301-Weiterleitung zwischengespeichert wird, setzen Sie einfach die Cache-Steuer-Header, dann können Sie die Weiterleitung rückgängig machen und Clients (Bot und Browser) werden nicht mehr umgeleitet.

%Vor%

Dies ist nützlich, wenn Browser die URL in Lesezeichen und Bots aktualisieren sollen, um ihren Index zu aktualisieren, aber trotzdem in der Lage sind, sie zu verfolgen oder die Weiterleitung rückgängig zu machen, indem sie zur ursprünglichen URL zurückgeleitet werden, ohne Endlosschleifen oder anderen Unsinn zu verursachen. p>

Dies bedeutet in keiner Weise, dass der Code 301 für alle Weiterleitungen verwendet werden muss, im Gegenteil, verschiedene Arten von Weiterleitungen haben unterschiedliche Statuscodes , die Core Xii zusammengefasst haben.

    
Timo Huovinen 25.09.2013 11:10
quelle
1

Die Antwort von Core Xii ist korrekt.

Allerdings können Sie das Firefox / Chrome Developer Tools-Plugin verwenden, um Redirect- und DNS-Caches zu löschen.

    
Petah 30.08.2012 08:20
quelle