Czy klient powinien zachowywać się inaczej? W jaki sposób?
Czy klient powinien zachowywać się inaczej? W jaki sposób?
Odpowiedzi:
Status 301 oznacza, że zasób (strona) zostaje trwale przeniesiony do nowej lokalizacji. Klient / przeglądarka nie powinna próbować żądać oryginalnej lokalizacji, ale odtąd powinna używać nowej lokalizacji.
Status 302 oznacza, że zasób znajduje się tymczasowo w innym miejscu, a klient / przeglądarka powinna nadal żądać oryginalnego adresu URL.
Gdy pająk wyszukiwarki znajdzie kod stanu 301 w nagłówku odpowiedzi strony, rozumie, że ta strona już nie istnieje, szuka nagłówka lokalizacji w odpowiedzi wybiera nowy adres URL i zastępuje indeksowany adres URL nowym, a także przenosi PageRank .
Tak więc wyszukiwarka odświeża wszystkie zindeksowane adresy URL, które już nie istnieją (znaleziono 301), za pomocą nowego adresu URL, dzięki czemu zachowany zostanie stary ruch na stronie, PageRank i przekierowany na nowy (nie stracisz ruchu na starej stronie).
Przeglądarka: jeśli przeglądarka znajdzie kod stanu 301, a następnie buforuje mapowanie starego adresu URL za pomocą nowego adresu URL, klient / przeglądarka nie będzie próbować żądać oryginalnej lokalizacji, ale odtąd będzie używać nowej lokalizacji, chyba że pamięć podręczna zostanie wyczyszczona.
Gdy pająk wyszukiwarki znajdzie 302 status strony internetowej, przekieruje tylko tymczasowo do nowej lokalizacji i zaindeksuje obie strony. Stary adres URL strony wciąż istnieje w bazie danych wyszukiwarki i zawsze próbuje zażądać starej lokalizacji i zaindeksować ją. Klient / przeglądarka nadal będzie próbować zażądać oryginalnej lokalizacji.
Przeczytaj więcej o tym, jak wdrożyć go 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
Przeważnie 301 vs 302 jest ważne dla indeksowania w wyszukiwarkach, ponieważ ich roboty indeksujące biorą to pod uwagę i przenoszą PageRank podczas korzystania z 301.
Zobacz odpowiedź Petera Lee, aby uzyskać więcej informacji.
301 oznacza, że do żądanego zasobu został przypisany nowy stały identyfikator URI, a wszelkie przyszłe odniesienia do tego zasobu powinny być wykonane przy użyciu jednego ze zwróconych identyfikatorów URI.
302 oznacza, że żądany zasób znajduje się tymczasowo pod innym identyfikatorem URI.
Ponieważ przekierowanie może być czasami zmieniane, klient powinien nadal używać URI żądania dla przyszłych żądań.
Ta odpowiedź jest dostępna w pamięci podręcznej tylko wtedy, gdy jest wskazana w polu nagłówka Cache-Control lub Expires.
<?php header("location: http://example.com/new.php"); ?>
i plikiem new.php - <?php echo 'I am new'; ?>
i przejdź do łącza . Przekieruje i wyświetli tekst „Jestem nowy”. Następnie zamień kod w old.php na, <?php echo 'I am old'; ?>
a także przejdź do linku . Zobaczysz tekst „Jestem stary”. Jeśli wykonałeś przekierowanie 301 w old.php, zobaczysz tekst „Jestem nowy” nawet po zmianach w kodzie old.php.
webcomic.com/latest
i przekierowuje do webcomic.com/some-comic-title
301, przeglądarka zawsze przekieruje do „some-comic-title”. Nawet jeśli kolejny komiks został opublikowany, a „najnowszy” przekierowuje teraz do „innego komiksu” ... W tym przypadku 302 byłoby lepsze.
Przekierowania 301 są buforowane w nieskończoność (przynajmniej przez niektóre przeglądarki).
Oznacza to, że jeśli skonfigurujesz 301, odwiedź tę stronę, nie tylko zostaniesz przekierowany, ale przekierowanie zostanie buforowane.
Gdy ponownie odwiedzisz tę stronę, Twoja przeglądarka * nawet nie zażąda tego adresu URL, po prostu trafi do pamięci podręcznej przekierowania.
Jedynym sposobem na cofnięcie 301 dla użytkownika z tym przekierowaniem w pamięci podręcznej jest ponowne przekierowanie z powrotem do oryginalnego adresu URL **. W takim przypadku przeglądarka zauważy pętlę i ostatecznie zażąda wprowadzonego adresu URL.
Oczywiście nie jest to opcja, jeśli zdecydujesz się na 301 na Facebooku lub innym zasobie, który nie jest w pełni pod kontrolą.
Niestety wielu dostawców hostingu oferuje funkcję w interfejsie administracyjnym zwaną po prostu „Przekierowaniem”, która dokonuje przekierowania 301. Jeśli używasz tego, aby tymczasowo przekierować swoją domenę na Facebooka jako stronę, która wkrótce będzie dostępna, to po prostu jesteś zepsuty.
* przynajmniej Chrome i Firefox, zgodnie z Jak długo przeglądarki buforują HTTP 301? . Właśnie wypróbowałem to z Chrome 45. Edycja: Safari 7.0.6 na Mac również buforuje, restart przeglądarki nie pomógł (Link mówi, że w Safari 5 na Windows to pomaga).
** Próbowałem javascript window.location = ''
, ponieważ byłoby to rozwiązanie, które można zastosować w większości przypadków - to nie działa. Powoduje niewykrytą nieskończoną pętlę. Jednak php header('Location: new.url')
przerywa pętlę
Konkluzja: używaj 301s tylko wtedy, gdy masz absolutną pewność, że już nigdy nie użyjesz tego adresu URL. Zwykle nigdy w katalogu głównym (example.com/)
Głównym problemem z 301 jest to, że przeglądarka buforuje przekierowanie, nawet jeśli wyłączono przekierowanie z poziomu serwera.
Zawsze lepiej jest użyć 302, jeśli włączasz przekierowanie dla krótkiego okna konserwacji.