Przekierowanie HTTP: 301 (stałe) vs. 302 (tymczasowe)

Czy klient powinien zachowywać się inaczej? Jak?

Author: mikemaccana, 2009-09-08

6 answers

Status 301 oznacza, że zasób (strona) jest przeniesiony na stałe do nowej lokalizacji. Klient / przeglądarka nie powinna próbować żądać oryginalnej lokalizacji, ale korzystać z nowej lokalizacji od teraz.

Status 302 oznacza, że zasób znajduje się tymczasowo w innym miejscu,a Klient / przeglądarka powinna nadal żądać oryginalnego adresu url.

 510
Author: Philippe Leybaert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-08 11:05:06

Gdy pająk Wyszukiwarki znajdzie kod stanu 301 w nagłówku odpowiedzi strony internetowej, rozumie, że ta strona już nie istnieje, wyszukuje nagłówek lokalizacji w odpowiedzi wybierz nowy adres URL i zamień zindeksowany adres URL na Nowy, a także przenieś pagerank.

Tak więc wyszukiwarka odświeża wszystkie zindeksowane adresy URL, które już nie istnieją (znaleziono 301) z nowym adresem URL, zachowa ruch na starej stronie, pagerank i przekieruje go do nowego (nie stracisz ruchu na stronie). stara strona).

Przeglądarka: jeśli przeglądarka znajdzie kod stanu 301, to buforuje mapowanie starego adresu URL z nowym adresem URL, klient / przeglądarka nie będzie próbować zażądać oryginalnej lokalizacji, ale używać nowej lokalizacji od teraz, chyba że pamięć podręczna jest wyczyszczona.

Tutaj wpisz opis obrazka

Gdy pająk Wyszukiwarki znajdzie status 302 dla strony internetowej, przekieruje tylko tymczasowo do nowej lokalizacji i indeksuje obie strony. Stary adres URL strony internetowej nadal istnieje w bazie danych Wyszukiwarki i zawsze próbuje poprosić o starą lokalizację i crawl go. Klient / przeglądarka nadal będzie próbować zażądać oryginalnej lokalizacji.

Tutaj wpisz opis obrazka

Przeczytaj więcej o tym, jak go wdrożyć w asp.net c# i jaki jest wpływ na Wyszukiwarki - http://www.dotnetbull.com/2013/08/301-permanent-vs-302-temporary-status-code-aspnet-csharp-Implementation.html

 90
Author: Rohit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-16 22:48:30

Głównie 301 vs 302 jest ważne dla indeksowania w wyszukiwarkach, ponieważ ich crawlery biorą to pod uwagę i przenoszą PageRank podczas korzystania z 301.

Zobacz

Odpowiedź Petera Lee Po Więcej Szczegółów.

 29
Author: Residuum,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-20 19:43:57

301 jest to, że żądanemu zasobowi przypisano nowy stały URI i wszelkie przyszłe odniesienia do tego zasobu powinny być wykonane przy użyciu jednego z zwrócone Uri. 302 oznacza, że żądany zasób tymczasowo przebywa pod innym URI. Ponieważ przekierowanie może być okresowo zmieniane, klient powinien kontynuuj używanie Request-URI dla przyszłych żądań. Ta odpowiedź jest tylko cache, jeśli jest wskazywany przez Cache-Control lub Expires header pole.

 17
Author: Peter Lee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-07 05:08:07

301 przekierowania są buforowane bezterminowo (przynajmniej przez niektóre przeglądarki).

Oznacza to, że jeśli skonfigurujesz 301, odwiedź tę stronę, nie tylko zostaniesz przekierowany, ale to przekierowanie zostanie zapisane w pamięci podręcznej.

Kiedy odwiedzasz tę stronę ponownie, twoja przeglądarka* nawet nie zadaje sobie trudu, aby zażądać tego adresu URL, po prostu przechodzi do buforowanego celu przekierowania.

Jedynym sposobem, aby cofnąć 301 dla odwiedzającego z tym przekierowaniem w pamięci podręcznej, jest ponowne przekierowanie z powrotem do oryginalnego adresu URL**. W takim razie, przeglądarka zauważy pętlę i wreszcie naprawdę zażąda wprowadzonego adresu URL.

Oczywiście nie jest to opcja, jeśli zdecydowałeś się na 301 na facebook lub jakikolwiek inny zasób, który nie jesteś w pełni pod kontrolą.

Niestety, wielu dostawców hostingu oferuje funkcję w swoim interfejsie administracyjnym o nazwie po prostu "przekierowanie", która wykonuje przekierowanie 301. Jeśli używasz tego do tymczasowego przekierowania swojej domeny na facebook jako stronę wkrótce, masz w zasadzie przerąbane.

*co najmniej Chrome i Firefox, zgodnie z Jak długo przeglądarki buforują HTTP 301S?. Właśnie próbowałem z Chrome 45. Edycja: Safari 7.0.6 na Macu również buforuje, restart przeglądarki nie pomógł (Link mówi, że w Safari 5 na Windows pomaga.)

* * próbowałem javascript window.location = '', ponieważ byłoby to rozwiązanie, które można zastosować w większości przypadków - nie działa. W efekcie powstaje niezauważona pętla nieskończona. Jednak php header('Location: new.url') przerywa pętlę

Bottom Line: używaj tylko 301s, jeśli jesteś absolutnie pewien, że nigdy więcej nie użyjesz tego adresu URL. Zwykle nigdy w katalogu głównym (example.com/)

 14
Author: Sebastian Schmid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:04

Głównym problemem z 301 jest to, że przeglądarka będzie buforować przekierowanie, nawet jeśli wyłączysz przekierowanie z poziomu serwera.

Zawsze lepiej jest użyć 302, jeśli włączysz przekierowanie na krótkie okno konserwacji.

 7
Author: Jobin Joseph,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-12 10:23:07