Rodzajów przekierowań URL jest więcej, niż sugeruje debata 301 kontra 302, a wybranie złego po cichu kosztuje cię szybkość lub pozycję w rankingu. Dzielą się na dwie rodziny. Przekierowania HTTP po stronie serwera to kody statusu zwracane przez serwer przed załadowaniem strony - 301, 302, 303, 307, 308. Przekierowania po stronie klienta następują w przeglądarce po załadowaniu strony - znacznik meta refresh lub skok przez JavaScript. Po stronie serwera jest szybciej i czyściej zarówno dla użytkowników, jak i crawlerów; po stronie klienta wolniej i słabiej, i sięgasz po to tylko wtedy, gdy serwer jest poza twoją kontrolą.
Pracuję nad ścieżką przekierowań, więc będę konkretny: co każdy rodzaj robi w sieci, jak odczytują go wyszukiwarki i który faktycznie wybrać. Jeśli chcesz dogłębnie przeanalizować dwa najczęściej używane, przekierowania 301 a 302 omawia tę parę szczegółowo; ten artykuł to pełna mapa.
Krótka wersja na początek: przy trwałym przeniesieniu używaj 301, przy tymczasowym 302, dodaj zachowujące metodę 308/307, gdy POST musi przetrwać, i unikaj opcji po stronie klienta, chyba że nie masz serwera do skonfigurowania.
Dwie rodziny przekierowań
Przekierowanie to po prostu instrukcja, żeby pójść gdzie indziej, ale miejsce, w którym ta instrukcja się znajduje, zmienia wszystko w kwestii jej działania.
Przekierowanie po stronie serwera to odpowiedź serwera "nie tutaj, idź tam" zanim jakakolwiek treść strony zostanie wysłana. Przeglądarka otrzymuje kod statusu i nagłówek Location i natychmiast się przenosi - żadna treść nie ładuje się pod oryginalnym URL, więc jest szybko i jednoznacznie. Przekierowanie po stronie klienta to coś odwrotnego: oryginalna strona ładuje się w całości, a dopiero potem znacznik meta lub skrypt odsyłają odwiedzającego dalej. Oznacza to zmarnowane ładowanie strony, widoczne migotanie i słabszy sygnał dla wyszukiwarek, które muszą załadować, a niekiedy i wykonać stronę, żeby w ogóle zauważyć przekierowanie. Formalne definicje kodów po stronie serwera znajdują się w RFC 9110, a praktyczne zachowanie przeglądarek jest udokumentowane w przewodniku MDN po przekierowaniach HTTP.
To jedno rozróżnienie - przed stroną czy po niej - to powód, dla którego cały ten artykuł wraca do zasady "używaj przekierowania po stronie serwera, gdy możesz".
Przekierowania kodów statusu HTTP
To są prawdziwe przekierowania, zwracane przez serwer w zakresie 3xx. Liczy się pięć z nich.
| Kod | Znaczenie | Trwałe? | Metoda zachowana? | Typowe zastosowanie |
|---|---|---|---|---|
| 301 | Przeniesione trwale | Tak | Niegwarantowane | Ostateczne przeniesienie, migracja strony, przejście na HTTPS |
| 302 | Znalezione | Nie | Niegwarantowane | Tymczasowe przeniesienie, edytowalne linki, testy A/B |
| 303 | Patrz inne | Nie | Wymusza GET | Przekierowanie po formularzu do strony z wynikiem |
| 307 | Tymczasowe przekierowanie | Nie | Tak | Tymczasowe przeniesienie na endpoincie POST lub API |
| 308 | Trwałe przekierowanie | Tak | Tak | Trwałe przeniesienie, gdzie metoda musi przetrwać |
Dwie osie porządkujące tabelę to trwałość i obsługa metody. Trwałość to oś SEO: 301 i 308 są trwałe, więc wyszukiwarki przekazują sygnały rankingowe i traktują cel jako kanoniczny, podczas gdy 302, 303 i 307 są tymczasowe i zachowują indeksowanie oryginalnego URL. Obsługa metody to oś inżynierska: 307 i 308 ściśle zachowują metodę HTTP, więc POST pozostaje POST, podczas gdy 301 i 302 historycznie pozwalały jej zmienić się w GET. Kod 303 jest wyjątkowy - stworzony specjalnie, żeby wymusić GET po przesłaniu formularza, żeby odświeżenie strony nie powodowało ponownego przesłania danych. Własna dokumentacja przekierowań Google potwierdza, że traktuje trwałe kody jako sygnały kanonizacji.
Dla codziennych linków internetowych, które są żądaniami GET, oś metody znika i tak naprawdę wybierasz między trwałym a tymczasowym - czyli dokładnie decyzją 301 kontra 302.
Przekierowania po stronie klienta: meta refresh i JavaScript
Gdy nie możesz skonfigurować serwera, pozostają dwie opcje na poziomie przeglądarki, i obie są kompromisami.
Meta refresh to znacznik HTML w nagłówku strony, który nakazuje przeglądarce załadować nowy URL po opóźnieniu - wzorzec "za 5 sekund zostaniesz przekierowany". Działa, ale strona załadowała się już przed jego uruchomieniem, więc jest wolno, a wyszukiwarki odczytują go niespójnie: natychmiastowe meta refresh jest zwykle traktowane jako trwałe przekierowanie, podczas gdy opóźnione jest niejednoznaczne i może być odczytane jako miękkie 404. Przekierowanie JavaScript jest jeszcze słabsze, bo działa tylko wtedy, gdy crawler wykona skrypt. Google renderuje JavaScript, ale z opóźnieniem, a wiele innych crawlerów w ogóle go nie uruchamia, więc przekierowanie może zostać całkowicie pominięte.
Uczciwy ranking opcji jest prosty: najpierw 3xx po stronie serwera, meta refresh tylko wtedy, gdy kontrolujesz HTML, ale nie serwer, a JavaScript jako ostateczność, gdy nie kontrolujesz niczego innego. Żadne z tego nie dotyczy zarządzanego krótkiego linku, który zawsze używa przekierowania po stronie serwera - techniki po stronie klienta przeznaczone są na sytuacje takie jak statyczny host bez konfiguracji przekierowań.
Które przekierowanie wybrać
Sprowadź to do decyzji, którą można podjąć w jednym przejściu.
- Trwałe przeniesienie, zwykły link:
301. Pełny transfer rankingowy, traktowany jako kanoniczny. - Tymczasowe przeniesienie, zwykły link:
302. Zachowuje indeksowanie oryginału i możliwość edycji linku. - Przeniesienie obejmuje POST lub wywołanie API: używaj
308dla trwałego lub307dla tymczasowego, żeby metoda przetrwała. - Po przesłaniu formularza:
303, żeby odświeżenie strony nie powodowało ponownego przesłania formularza.
Meta-zasada stojąca za wszystkimi czterema: dopasuj kod statusu do prawdy o przeniesieniu - czy jest trwałe i czy metoda ma znaczenie. Błędne dopasowanie to sposób, w jaki przekierowania po cichu tracą ranking lub psują formularz.
Czego używają krótkie linki
Zarządzany krótki link to przekierowanie po stronie serwera i jest ku temu dobry powód - to szybka, przyjazna dla crawlerów rodzina. Interesującym wyborem jest który kod, a odpowiedź dla większości krótkich linków to 302.
Brzmi to źle z perspektywy SEO, dopóki nie przypomnisz sobie, do czego służy krótki link. Kod 302 zachowuje możliwość edycji linku, więc możesz go przepisać po wydrukowaniu lub udostępnieniu, i sprawia, że każde kliknięcie trafia do serwera, dzięki czemu twoja analityka pozostaje dokładna - obie rzeczy, które twardocacheowany 301 by ci kosztował. Pełne uzasadnienie, w tym pułapka buforowania przeglądarki, jest w artykule przekierowania 301 a 302, a mechanika rozwiązywania przekierowania na brzegu sieci jest w artykule jak działają skracacze URL. Jedna zasada obowiązuje niezależnie od kodu: ogranicz do jednego skoku. Przekierowanie wskazujące na inne przekierowanie marnuje budżet crawlowania i zwiększa opóźnienie, i jest najszybszym sposobem na zrujnowanie SEO, które krótkie linki skądinąd zachowują.
Cała mapa mieści się w jednym zdaniu: kody po stronie serwera dla prawdziwych przekierowań, trwałe kontra tymczasowe dla SEO, warianty zachowujące metodę dla żądań innych niż GET, a triki po stronie klienta tylko wtedy, gdy serwer jest niedostępny. Wybieraj według prawdy o przeniesieniu, ogranicz łańcuch do jednego skoku, a twoje przekierowania będą robić to, czego oczekiwałeś.
Powiązane artykuły na blogu
- Przekierowania 301 a 302: które powinny używać krótkie linki
- Czy skracacze URL szkodzą SEO? Uczciwa odpowiedź
- Jak działają skracacze URL pod maską
- Osiąganie p95 poniżej 15 ms dla przekierowań z FRA, ASH i SGP
- Strategia buforowania dla przekierowań URL: L1 LRU + L2 Redis
- Luki typu open redirect i jak im zapobiegać
- Pętla przekierowań: jak znaleźć i naprawić ERR_TOO_MANY_REDIRECTS
- Jak przekierować adres URL: sześć sposobów i kiedy który zastosować
Najczęściej zadawane pytania
Jakie są główne rodzaje przekierowań URL?
Istnieją dwie rodziny. Przekierowania HTTP po stronie serwera to kody statusu zwracane przez serwer: 301 (trwałe), 302 (tymczasowe), 303 (patrz inne, wymusza GET), 307 (tymczasowe, zachowujące metodę) i 308 (trwałe, zachowujące metodę). Przekierowania po stronie klienta następują w przeglądarce po załadowaniu strony: znacznik HTML meta refresh lub zmiana lokalizacji przez JavaScript. Przekierowania po stronie serwera są szybsze i czystsze zarówno dla użytkowników, jak i wyszukiwarek; te po stronie klienta są wolniejsze i słabsze, i sięgasz po nie tylko wtedy, gdy nie możesz kontrolować serwera.
Jaka jest różnica między przekierowaniem 301 a 308?
Oba są trwałe, więc oba informują wyszukiwarki, że miejsce docelowe to nowy kanoniczny URL i przekazują sygnały rankingowe. Różnica leży w obsłudze metody HTTP: 301 historycznie pozwalał na zmianę metody (POST mógł stać się GET po przekierowaniu), podczas gdy 308 ściśle zachowuje metodę i treść żądania. Dla zwykłych linków, które są żądaniami GET, zachowują się tak samo. Kod 308 ma znaczenie dla API i przesyłania formularzy, gdzie POST musi pozostać POST.
Do czego służy przekierowanie 307?
Kod 307 to ścisłe tymczasowe przekierowanie. Wykonuje tę samą pracę co 302 - odsyła odwiedzającego gdzie indziej na razie, zachowując indeksowanie oryginalnego URL - ale gwarantuje zachowanie metody żądania, więc POST pozostaje POST. Używaj go do tymczasowych przenosin na punktach końcowych przyjmujących żądania inne niż GET, takich jak API lub obsługiwacz formularza. Dla zwykłego tymczasowego przekierowania linka, 302 i 307 są zamienne.
Czy przekierowanie meta refresh jest złe dla SEO?
Jest słabsze niż przekierowanie po stronie serwera i warto go unikać, gdy masz wybór. Meta refresh uruchamia się w przeglądarce po załadowaniu HTML, co jest wolniejsze dla użytkownika i mniej wiarygodnym sygnałem dla wyszukiwarek. Google twierdzi, że interpretuje natychmiastowe meta refresh jako trwałe przekierowanie, ale opóźnione jest niejednoznaczne i może być traktowane jako miękkie 404 lub gorzej. Jeśli możesz zwrócić 301 lub 302 z serwera, zrób to zamiast tego.
Czy przekierowania JavaScript działają dla SEO?
Mogą, ale są najmniej niezawodną opcją. Przekierowanie JavaScript uruchamia się tylko wtedy, gdy crawler wykona skrypt, a choć Google renderuje JavaScript, robi to z opóźnieniem, a inne crawlery często tego nie robią. Przekierowanie może więc zostać pominięte lub zliczone późno. Używaj przekierowania JavaScript tylko wtedy, gdy nie kontrolujesz niczego na serwerze i nie możesz też użyć meta refresh - to ostateczność, nie domyślna opcja.
Który rodzaj przekierowania powinienem wybrać?
Dopasuj kod do rzeczywistości. Przy trwałym przeniesieniu używaj 301 (lub 308, jeśli POST musi przetrwać). Przy tymczasowym przeniesieniu używaj 302 (lub 307 dla metod innych niż GET). Dla większości krótkich linków, czyli edytowalnych przekierowań GET, domyślnym wyborem jest 302, ponieważ zachowuje możliwość zmiany linku i zapewnia dokładność analityki. Przekierowania meta refresh i JavaScript po stronie klienta rezerwuj na przypadki, gdy w ogóle nie możesz kontrolować serwera.
Wypróbuj Elido
Wklej URL, otrzymaj krótki link
Bez rejestracji. Link działa 30 dni. Zarejestruj się, aby zachować go na zawsze.
Za darmo, bez rejestracji · 2 dziennie