Przekierowanie 308 Permanent Redirect
Czym jest stałe przekierowanie 308, jak zachowuje metodę HTTP w przeciwieństwie do 301, jak Google przekazuje przez nie sygnały oraz kiedy warto go użyć.
Języki
1 sygnał dowodowy na tej stronie
- Powiązane działające narzędzieHTTP Status & Redirect Checker
308 Permanent Redirect oznacza stałe przeniesienie i działa jak 301, ale rygorystycznie zachowuje metodę żądania pod nowym adresem; zgodny klient ponawia więc również treść, a POST pozostaje POST-em. Google opisuje 308 jako równoważne 301, a Bing traktuje oba kody tak samo, więc nie ma przewagi SEO. Użyj 308 przy API, webhookach, formularzach i logowaniu POST, gdy metoda i dane muszą dotrzeć bez zmian. Przy zwykłej zmianie strony, HTTPS albo domeny 301 pozostaje pragmatycznym wyborem dzięki szerszej obsłudze narzędzi. Sprawdź jednak prawdziwego klienta, cache, dane uwierzytelniające i idempotencję; nie każda wtyczka CMS, warstwa CDN ani starsze proxy potrafi wyemitować 308, a część nadal oferuje tylko 301/302/307.
TL;DR — 308 Permanent Redirect oznacza stałe przeniesienie — dokładnie jak 301 — ale daje jedną dodatkową gwarancję: metoda żądania nie może zmienić się pod nowym adresem, a ponieważ klient ponawia to samo żądanie, zwykle przechodzi z nim także treść, na przykład dane formularza. Wysłanie formularza pozostaje więc wysłaniem formularza, a nie cichą zamianą na zwykłe odwiedzenie strony. Dla wyszukiwarek oba kody są równoważne, dlatego przy zwykłej zmianie strony wystarczy 301. Po 308 sięgaj, gdy przenosisz API, formularz albo inne żądanie, które musi dotrzeć do celu bez zmian.
Czym naprawdę jest 308
Gdy serwer przenosi przeglądarkę z jednego adresu URL na inny, dołącza do odpowiedzi liczbę — kod statusu. Kilka takich liczb oznacza „ta strona została trwale przeniesiona”:
- 301 — „Moved Permanently”. Oryginalny, najstarszy kod stałego przekierowania, obecny w sieci od jej początków.
- 308 — „Permanent Redirect”. Nowszy kod, dodany do specyfikacji w 2015 roku, który robi to samo, a ponadto daje gwarancję, której 301 nie dawał.
Ta gwarancja jest całym powodem istnienia 308. Zwykle podczas odwiedzania strony przeglądarka wysyła proste żądanie GET — „podaj tę stronę”. Przy wysłaniu formularza albo logowaniu wysyła jednak POST, czyli żądanie niosące wpisane dane. Starszy 301 może technicznie zamienić POST na zwykły GET w drodze pod nowy adres, a wtedy dane zwykle znikają. 308 nie pozwala na taką zmianę metody. Ponieważ klient ponawia to samo żądanie, dane zwykle przechodzą razem z nim; jeśli ma to znaczenie dla API albo płatności, sprawdź prawdziwe żądanie i potwierdź w logach, że treść dotarła. Evidence for this claim RFC 7538 defines 308 Permanent Redirect as a permanent move whose redirect follow-up must not change the request method. Scope: HTTP semantics for 308 responses. Confidence: high · Verified: IETF: RFC 7538 §3 — 308 Permanent Redirect
Czy 308 szkodzi SEO?
Nie. Dokumentacja Google mówi wprost, że 308 jest “Equivalent to 301.” (tłumaczenie) „równoważne 301”. Oba są przekierowaniami stałymi i przekazują sygnały strony pod nowy adres w ten sam sposób. Bing również traktuje je tak samo. Nie ma premii rankingowej ani kary za wybór 308 — decyzja dotyczy technicznego zachowania, a nie pozycji w wyszukiwaniu. Evidence for this claim Google treats 308 as equivalent to 301 for Search and groups both as permanent redirects. Scope: Google Search processing; the two status codes remain semantically different for HTTP clients. Confidence: high · Verified: Google: HTTP status codes and Search Google: Redirects and Google Search
Kiedy go używać?
Przy zwykłej stronie, która zmieniła adres — nowym URL-u, przejściu z http na https albo zmianie domeny — łatwym, uniwersalnym wyborem jest 301. Rozumieją go wszystkie popularne przeglądarki, wtyczki i narzędzia hostingowe.
Po 308 sięgaj konkretnie wtedy, gdy przekierowywany zasób nie jest zwykłą stroną:
- API, z którego korzysta inne oprogramowanie.
- Formularz albo logowanie wysyłające dane.
- Webhook — automatyczny adres, na który inna usługa wysyła żądania.
W tych sytuacjach nie możesz pozwolić, aby żądanie po cichu zmieniło się, a dane zniknęły — 308 gwarantuje, że tak się nie stanie.
Chcesz poznać historię specyfikacji, dokładne cytaty Google i Binga oraz gotowe fragmenty konfiguracji serwera? Przejdź do karty Advanced.
TL;DR — 308 to stałe przekierowanie, które łączy ten sam sygnał kanonikalizacji co 301 z rygorystycznym zachowaniem metody. Dokumentacja Google mówi “Equivalent to
301” (tłumaczenie) „równoważne 301”, ale klient nie może zmienić metody pod nowym adresem; przy zgodnym kliencie wraz z nią przechodzi treść żądania. Kod powstał, bo HTTP miało tymczasowy, zachowujący metodę 307, ale brakowało stałego odpowiednika — lukę wypełnił RFC 7538 z 2015 roku, a RFC 9110 wskazuje 308 w definicji 301. Dla SEO oba kody są wymienne. Wybierz 308 dla migracji API, webhooków i formularzy POST, ale zweryfikuj metodę oraz treść na własnym kliencie. Przy zwykłej stronie 301 nadal jest domyślnym wyborem dzięki szerszej obsłudze; część wtyczek CMS, interfejsów edge i starszych proxy wciąż oferuje tylko 301/302/307.
Co 308 oznacza mechanicznie
308 Permanent Redirect niesie ten sam komunikat co 301 — zasób jest teraz na stałe pod nowym adresem — oraz dodaje gwarancję, której 301 nie daje: klient nie może zmienić metody żądania w drodze do celu. Ponieważ ponawia to samo żądanie, przy kliencie zgodnym ze specyfikacją razem z nim przechodzi treść. To skutek gwarancji metody, a nie osobna certyfikowana obietnica, więc w ważnych integracjach sprawdź wszystko od początku do końca. MDN opisuje 308 jako kod zachowujący metodę i w praktyce treść, podczas gdy 301 może tego nie robić.
W przewodniku Ahrefs po przekierowaniach ujmuję to tak: “A 308 redirect is the same as a 301 redirect, except it retains the HTTP method of the original request, GET or POST, when performing the redirect.” (tłumaczenie) „Przekierowanie 308 jest tym samym co 301, z wyjątkiem zachowania metody HTTP pierwotnego żądania, GET lub POST.” Krócej, w przewodniku po kodach statusu HTTP: “308 Permanent Redirect – Has the same functionality as a 301 redirect, except you can’t switch between POST and GET.” (tłumaczenie) „308 Permanent Redirect ma tę samą funkcję co 301, ale nie pozwala przełączać POST i GET.” Evidence for this claim RFC 7538 defines 308 Permanent Redirect as a permanent move whose redirect follow-up must not change the request method. Scope: HTTP semantics for 308 responses. Confidence: high · Verified: IETF: RFC 7538 §3 — 308 Permanent Redirect
Zobaczmy różnicę na konkretnym przykładzie. Klient wysyła zamówienie metodą POST do /api/orders z treścią JSON:
POST /api/orders HTTP/1.1
Host: shop.example.com
Content-Type: application/json
{ "sku": "A-100", "qty": 2 }Jeśli endpoint odpowie kodem 301, a klient zastosuje historyczne zezwolenie na zmianę metody, żądanie może dotrzeć pod nowy adres jako pusty GET — bez treści, a zamówienie przepadnie. Po 308 klient musi ponowić POST pod nowym adresem; zgodny klient przeniesie treść i zamówienie zostanie obsłużone. Sprawdź to jednak w logach własnego klienta i serwera, zamiast zakładać uniwersalne zachowanie. To cała praktyczna różnica: ujawnia się tylko wtedy, gdy pierwotne żądanie nie było zwykłym GET-em.
Dlaczego powstał 308 — historia specyfikacji
To fragment pomijany przez większość objaśnień, a najlepiej pokazuje, skąd wziął się ten kod.
Najpierw był 307. HTTP miało już tymczasowe przekierowanie zachowujące metodę — 307 — na długo przed powstaniem stałego odpowiednika. Główna specyfikacja (RFC 7231) nie definiowała stałego odpowiednika 307. Istniał więc tymczasowy kod „zachowaj metodę” i stały kod „możesz zmienić metodę” (301), ale brakowało stałego „zachowaj metodę”.
RFC 7538 wypełnił lukę. 308 powstał jako brakujący stały 307 — najpierw eksperymentalnie w RFC 7238 (czerwiec 2014), a następnie jako standard w RFC 7538 (kwiecień 2015). To uzupełnienie realnej luki, nie zamiennik 301.
Obecna specyfikacja wskazuje na niego wprost. RFC 9110, czyli aktualna specyfikacja semantyki HTTP, nadal opisuje niejednoznaczność 301 i w jego definicji wskazuje 308 jako rozwiązanie: klient “MAY change the request method from POST to GET for the subsequent request… If this behavior is undesired, the 308 (Permanent Redirect) status code can be used instead.” (tłumaczenie) „MOŻE zmienić metodę żądania z POST na GET w kolejnym żądaniu… Jeśli takie zachowanie jest niepożądane, można użyć kodu 308 (Permanent Redirect).” To jedno zdanie wyjaśnia sens 308. RFC 9110 dodaje w sekcji 308 uczciwe zastrzeżenie: kod “is much younger (June 2014) than its sibling codes and thus might not be recognized everywhere.” (tłumaczenie) „jest znacznie młodszy (z czerwca 2014 r.) od swoich kodów siostrzanych, więc może nie być rozpoznawany wszędzie.”
Zamiana POST na GET przy 301 nie jest błędem — to udokumentowane „z powodów historycznych” zezwolenie zapisane w specyfikacji. 308 jest oficjalnym sposobem, aby z niego zrezygnować.
301 kontra 308 — praktyczna różnica w jednej tabeli
| Zwykłe żądanie GET | POST/PUT/DELETE z treścią | |
|---|---|---|
| 301 | Zachowuje się tak samo jak 308 | Może zostać zmienione na GET; treść może zniknąć |
| 308 | Zachowuje się tak samo jak 301 | Metoda i treść muszą zostać ponowione |
| Sygnał SEO | Taki sam (stały, konsoliduje) | Taki sam (stały, konsoliduje) |
Wniosek: dla ogromnej większości przekierowań — zwykłych GET-ów — 301 i 308 robią dokładnie to samo. Gwarancja ma znaczenie dopiero wtedy, gdy występuje metoda inna niż GET i treść żądania. Pełne porównanie znajdziesz w osobnym artykule 301 kontra 308.
Czy Google traktuje 308 tak samo jak 301 w SEO?
Tak, jednoznacznie i zgodnie z dokumentacją. Dokumentacja Google dotycząca kodów statusu HTTP opisuje 301 jako przekierowanie, za którym Google podąża i którego używa jako silnego sygnału do przetworzenia celu, a 308 jako “Equivalent to
301.” (tłumaczenie) „równoważne 301”. Dodaje rozsądną uwagę: “While Google treats these status codes the same way, keep in mind that they’re semantically different. Use the status code that’s appropriate for the redirect so other clients (for example, e-readers, other search engines) may benefit from it.” (tłumaczenie) „Chociaż Google traktuje te kody tak samo, pamiętaj, że różnią się semantycznie. Użyj kodu właściwego dla przekierowania, aby mogli skorzystać inni klienci.” Innymi słowy, Google nie ukarze za wybór „niewłaściwego” kodu, ale inne oprogramowanie polega na tej różnicy. Evidence for this claim Google treats 308 as equivalent to 301 for Search and groups both as permanent redirects. Scope: Google Search processing; the two status codes remain semantically different for HTTP clients. Confidence: high · Verified: Google: HTTP status codes and Search Google: Redirects and Google Search
Przewodnik Google po przekierowaniach umieszcza oba kody w tej samej kategorii: “The 301 and 308 status codes mean that a page has permanently moved to a new location.” (tłumaczenie) „Kody statusu 301 i 308 oznaczają, że strona została trwale przeniesiona pod nowy adres.” Wytyczne dotyczące migracji również wymieniają stałe przekierowania HTTP „takie jak 301 i 308”.
Warto wiedzieć, że ta równoważność nie zawsze była zapisana w dokumentacji. Gary Illyes mówił, że Google wewnętrznie scala 308 z 301, a relacja Search Engine Roundtable opisała dodanie tej informacji do oficjalnych dokumentów jako moment, od którego można było powoływać się na nią bez zastrzeżeń. Dokładne cytaty znajdują się w karcie Quotes.
Czy Bing traktuje 308 tak samo jak 301?
Tak. Bing nie ma osobnej strony dokumentacji o 308, ale Fabrice Canel z Microsoftu potwierdził to bezpośrednio na X we wrześniu 2024 roku; relacja Search Engine Roundtable podaje, że Bing traktuje przekierowania 308 tak samo jak 301. To najważniejsze publiczne stanowisko Binga — jego dosłowne brzmienie znajdziesz w karcie Quotes.
Kiedy naprawdę używać 308
Samodzielny argument za 308 dotyczy niemal zawsze żądania innego niż GET.
Migracje endpointów API i wersji. Przeniesienie /v1/ do /v2/ albo zmiana hosta API to podręcznikowy przypadek. Klienci wysyłają do tych endpointów POST/PUT/PATCH/DELETE z rzeczywistą treścią. 308 gwarantuje przejście metody i ładunku; 301 może po cichu je obniżyć i zgubić żądanie.
Migracje witryn z dużą liczbą POST-ów. Checkout, logowanie i adresy formularzy wysyłają dane. Jeśli któryś z tych URL-i zmienia się podczas migracji, 308 zachowa wysłanie, podczas gdy 301 może tego nie zrobić.
Zmiany adresów webhooków. Gdy inna usługa wysyła POST do przenoszonego webhooka, 308 mówi jej klientowi HTTP, aby ponowił POST pod nowym adresem wraz z treścią — dokładnie tego potrzebuje odbiorca webhooka.
Wspólny mianownik jest prosty: użyj 308 wszędzie tam, gdzie utrata treści albo ciche przejście metody na GET zepsułoby działanie, a nie tylko przesunęło sygnały SEO.
Przed włączeniem któregokolwiek z tych przekierowań przetestuj je jak integrację, nie tylko jak kod statusu:
- Odtwórz prawdziwą metodę i ładunek w testowej kopii nowego endpointu.
- Sprawdź, czy nagłówki autoryzacji i ciasteczka powinny przejść, i potwierdź, że faktycznie przechodzą.
- Jeśli pierwotne żądanie nie jest idempotentne (np. POST tworzący zamówienie), obserwuj podwójne skutki uboczne podczas skoku.
- Potwierdź zachowanie query stringa i nagłówka
Content-Type, nie tylko treści. - Zweryfikuj, czy prawdziwy klient — nadawca webhooka, SDK API, przeglądarka — automatycznie podąża za 308, zanim wycofasz stary endpoint. Nie każdy klient HTTP robi to domyślnie.
Kiedy 301 nadal jest pragmatycznym domyślnym wyborem
Dla wszystkiego, co jest zwykłym GET-em, 301 pozostaje rozsądnym domyślnym kodem:
- Zwykłe zmiany adresów stron i przenoszenie treści.
- Migracje HTTP → HTTPS.
- Zmiany domeny i standardowe migracje witryny.
- Ujednolicanie końcowych ukośników oraz wariantów
www/bezwww.
Żądanie jest tu zwykłym GET-em, więc gwarancja 308 nic nie daje, a 301 wygrywa uniwersalnością. SEO nie ponosi kosztu żadnego wyboru. Nie zmieniaj masowo istniejących 301 na 308 dla rzekomego wzrostu pozycji — takiej korzyści nie ma. W hierarchii preferencji z przewodnika Ahrefs po przekierowaniach 308 i 301 zajmują najwyższą pozycję, przed odświeżeniem meta, JavaScriptem i innymi obejściami; są równorzędne, a nie ustawione w drabince.
Zastrzeżenia dotyczące wdrożenia i obsługi — rzeczywiste ryzyko w 2026 roku
Obsługa przeglądarek nie jest już głównym ryzykiem. Według bieżących danych caniuse 308 ma około 96,5% globalnej obsługi — sprawdź tabelę, bo liczba się zmienia. Luki dotyczą głównie dawno porzuconych przeglądarek: wersji sprzed IE11, dawnych Chrome/Firefox/Safari i starego Android Browser. Jeśli widzisz ostrzeżenie, że IE11 nie działa z 308, dotyczy ono nieaktualnego rynku.
Narzędzia są dziś ważniejszym zastrzeżeniem. Nie każda warstwa udostępnia opcję 308: część wtyczek CMS, interfejsów reguł przekierowań CDN/edge i starszych proxy lub load balancerów nadal pozwala wybrać tylko 301/302/307. Zanim oprzesz się na 308, sprawdź, czy faktyczna warstwa odpowiedzi emituje ten kod, zamiast po cichu go obniżać — karta Scripts zawiera prosty test statusu na przewodzie. Uwaga RFC 9110 o tym, że kod “much younger… might not be recognized everywhere” (tłumaczenie) „jest młodszy i może nie być rozpoznawany wszędzie”, dotyczy ogólnego wdrożenia, a w 2026 roku w praktyce widać ją głównie w narzędziach, nie w popularnych przeglądarkach.
Niestandardowy przypis: „308 Resume Incomplete”
Jeden szczegół pokazuje, jak młody jest ten kod: w praktyce 308 nie służy wyłącznie do przekierowań. API wysyłania plików Google Drive używa go także w innym znaczeniu — „Resume Incomplete” — aby zasygnalizować zatrzymanie wysyłania fragmentu i potrzebę wznowienia przez klienta. John Mueller zwrócił na to uwagę, a MDN dokumentuje to niestandardowe użycie. Nie zmienia to znaczenia 308 jako przekierowania, ale przypomina, że jest to kod młodszy i mniej „oswojony” niż czcigodny 301.
Łańcuchy przekierowań działają tak samo
Nic z powyższego nie zmienia zasad łańcuchów. Crawlery Google domyślnie podążają za maksymalnie 10 skokami, choć to wartość domyślna, a nie uniwersalna stała — konkretne produkty mogą zachowywać się inaczej. Limit jest taki sam dla 301 i 308. Jeśli łączysz kilka przekierowań, stosuj tę samą higienę łańcuchów i pętli; gdy możesz, skróć wszystko do jednego skoku. Szczegóły znajdziesz w osobnym artykule o łańcuchach przekierowań.
Podsumowanie AI
Skrócona wersja wariantu Advanced:
- 308 = stałe przekierowanie, rygorystyczne zachowanie metody. Ten sam komunikat co 301 plus gwarancja, której 301 nie dawał: klient nie może zmienić metody pod nowym adresem. Zgodny klient ponawia żądanie, więc treść zwykle przechodzi razem z nim — sprawdź cały przepływ od początku do końca na własnym kliencie.
- Równoważność SEO z 301. Dokumentacja Google mówi “Equivalent to
301” (tłumaczenie) „równoważne 301”; Gary Illyes mówi, że Google scala 308 z 301, a Fabrice Canel potwierdza zgodność Binga. Nie ma premii ani kary rankingowej. - Dlaczego istnieje: HTTP miało tymczasowy kod zachowujący metodę (307), zanim dostało stały odpowiednik. RFC 7538 z 2015 roku wypełnił lukę, a RFC 9110 wskazuje 308 przy definicji 301.
- Użyj 308 przy: migracji API i wersji, zmianie webhooków oraz przepływach formularzy/logowania POST — wszędzie, gdzie utrata metody lub treści zepsułaby działanie. W środowisku testowym odtwórz metodę i ładunek, sprawdź autoryzację, idempotencję i rzeczywiste zachowanie klienta.
- Użyj 301 przy: zwykłych zmianach stron, HTTP→HTTPS, zmianach domeny i normalizacji — to zwykłe GET-y, przy których gwarancja 308 nic nie daje.
- Wdrożenie: obsługa przeglądarek jest mocna (caniuse podaje około 96,5%+), ale niektóre wtyczki CMS, interfejsy CDN/edge i starsze proxy nadal nie emitują 308 i często oferują tylko 301/302/307. Sprawdź przewód, a także pamiętaj, że 308 może być heurystycznie buforowany.
- Przypis: Google Drive używa „308 Resume Incomplete” przy zatrzymanych wysyłkach — to inne niż przekierowanie wykorzystanie kodu.
Dokumentacja oficjalna
Dokumentacja źródłowa wyszukiwarek i specyfikacji HTTP:
- Kody statusu HTTP, błędy sieci i DNS oraz wyszukiwarka Google — określają 308 jako „Equivalent to
301”, wyjaśniają różnicę semantyczną i podają limit 10 skoków. - Przekierowania i Google Search — mówią, że kody
301i308oznaczają trwałe przeniesienie strony. - Zmiany witryny z modyfikacją URL — zalecają stałe przekierowania HTTP, takie jak 301 i 308.
Specyfikacja HTTP
- RFC 9110 — semantyka HTTP — aktualna specyfikacja; §15.4.9 definiuje 308 i zawiera zastrzeżenie, że “is much younger (June 2014) than its sibling codes and thus might not be recognized everywhere.” (tłumaczenie) „jest znacznie młodszy (z czerwca 2014 r.) od kodów siostrzanych, więc może nie być rozpoznawany wszędzie”; specyfikacja ujmuje ten sam skrót jako “much younger… might not be recognized everywhere” (tłumaczenie) „młodszy i może nie być rozpoznawany wszędzie”; §15.4.2 opisuje 301 i wskazuje 308 jako rozwiązanie niepożądanej zamiany POST na GET.
- RFC 7538 — kod statusu HTTP 308 (stałe przekierowanie) — standard, który wprowadził 308 w kwietniu 2015 roku i zastąpił eksperymentalny RFC 7238 z czerwca 2014.
Materiały referencyjne
- MDN — stałe przekierowanie 308 — zachowanie metody i treści oraz niestandardowe użycie Google Drive „Resume Incomplete”.
- caniuse — kod statusu HTTP 308 — tabela obsługi przeglądarek (około 96,5% globalnie).
Cytaty ze źródła
Udokumentowane wypowiedzi Google, Binga i specyfikacji HTTP. Każdy odnośnik prowadzi bezpośrednio do cytowanego fragmentu źródła.
Google — podstawowa równoważność
- “301 (moved permanently): Google follows the redirect, and Google systems use the redirect as a strong signal that the redirect target should be processed.” (tłumaczenie) „301 (przeniesiono na stałe): Google podąża za przekierowaniem, a systemy Google używają go jako silnego sygnału, że cel powinien zostać przetworzony.” — dokumentacja Google Search Central. Przejdź do cytatu
- “308 (moved permanently): Equivalent to
301.” (tłumaczenie) „308 (przeniesiono na stałe): równoważne 301.” Przejdź do cytatu - “While Google treats these status codes the same way, keep in mind that they’re semantically different. Use the status code that’s appropriate for the redirect so other clients (for example, e-readers, other search engines) may benefit from it.” (tłumaczenie) „W cytowanym zastrzeżeniu Google podkreśla, że kody różnią się semantycznie. Użyj właściwego kodu, aby skorzystać mogli inni klienci.” Przejdź do cytatu
- “The
301and308status codes mean that a page has permanently moved to a new location.” (tłumaczenie) „Kody statusu 301 i 308 oznaczają, że strona została trwale przeniesiona pod nowy adres.” Przejdź do cytatu
Gary Illyes, Google
- O tym, jak Google obsługuje 308: “we just merge that with 301 so we really don’t care iirc.” (tłumaczenie) „po prostu łączymy to z 301, więc naprawdę nas to nie obchodzi”. Relacja Search Engine Roundtable, Google oficjalnie traktuje przekierowania 308 jak 301 (lipiec 2021) — przed uznaniem za ostateczne potwierdź względem oryginału.
John Mueller, Google
- O niestandardowym użyciu: “Google Drive uses a 308 redirect as a Resume Incomplete response to indicate to the client when an incomplete upload stalled. So that is a bit different. But you can use it as a normal redirect.” (tłumaczenie) „Google Drive używa przekierowania 308 jako odpowiedzi Resume Incomplete, aby poinformować klienta o zatrzymaniu niepełnej wysyłki. To trochę inne znaczenie, ale można używać 308 jako zwykłego przekierowania.” Relacja Search Engine Roundtable, Google może traktować przekierowania 308 jak 301 (maj 2018) — przed uznaniem za ostateczne potwierdź względem oryginału.
Fabrice Canel, Microsoft Bing
- “I accidentally deleted my reply, so confirming again: Bing treats 308 redirects the same as 301 redirects.” (tłumaczenie) „Przypadkowo usunąłem odpowiedź, więc potwierdzam ponownie: Bing traktuje przekierowania 308 tak samo jak 301.” Fabrice Canel na X (wrzesień 2024), relacja Search Engine Roundtable: Bing traktuje przekierowania 308 tak samo jak 301 — potwierdź względem oryginału.
RFC 9110 — specyfikacja semantyki HTTP
- Dlaczego istnieje 308, według definicji 301 w specyfikacji: “For historical reasons, a user agent MAY change the request method from POST to GET for the subsequent request. If this behavior is undesired, the 308 (Permanent Redirect) status code can be used instead.” (tłumaczenie) „Z powodów historycznych klient może zmienić metodę żądania z POST na GET w kolejnym żądaniu. Jeśli takie zachowanie jest niepożądane, można użyć kodu 308 (Permanent Redirect).” Przeczytaj RFC 9110
- O wdrożeniu: 308 “is much younger (June 2014) than its sibling codes and thus might not be recognized everywhere.” (tłumaczenie) „jest znacznie młodszy (z czerwca 2014 r.) od kodów siostrzanych, więc może nie być rozpoznawany wszędzie.” Przeczytaj RFC 9110
Czy to przekierowanie powinno być kodem 308?
Ponieważ 301 i 308 są równoważne dla SEO, decyzja nie dotyczy pozycji, tylko jednego pytania: czy występuje żądanie inne niż GET z treścią i czy warstwa przekierowań potrafi rzeczywiście wyemitować 308? Przejdź przez drzewo.
Should I use a 308 for this redirect?
Skrót: zwykły GET → 301; żądanie inne niż GET, które musi zostać zachowane (jeśli stos potrafi wyemitować 308) → 308. Dla SEO oba kody są wymienne, więc decyduje metoda i szybkie sprawdzenie narzędzia.
Mity i błędy dotyczące 308
To zestawienie pochodzi wprost z najczęstszych awarii, które widzę:
„308 jest lepszy dla SEO niż 301”. Fałsz. Dokumentacja Google mówi “Equivalent to
301,” (tłumaczenie) „równoważne 301”, a Illyes, Mueller i Canel z Binga potwierdzają zgodność. Wybór dotyczy poprawności metody i treści, nie przewagi rankingowej.
„Należy zmienić wszystkie istniejące 301 na 308”. To czysta praca pozorna bez korzyści rankingowej. Przy zwykłych GET-ach 301 w praktyce robi to samo; zmieniaj kod tylko dla przekierowań niosących żądania inne niż GET.
„308 nie jest bezpieczny, bo jest nowszy”. To przesada, szczególnie w odniesieniu do przeglądarek: RFC 7538 ma ponad dekadę, Google i Bing potwierdzają obsługę na poziomie wyszukiwarek, a caniuse pokazuje około 96,5%+ obsługi. RFC 9110 nadal zawiera ogólne zastrzeżenie, że młodszy 308 może nie być rozpoznawany wszędzie; w 2026 roku widać je głównie w lukach narzędziowych, nie w głównych klientach.
„301 zawsze zepsuje mój POST lub API”. To przesada. Współczesne klienty często zachowują się poprawnie; udokumentowane ryzyko dotyczy konkretnej zamiany POST na GET dopuszczonej „z powodów historycznych”. 308 usuwa tę możliwość, ale nie naprawia uniwersalnej, gwarantowanej awarii, bo taka nie istnieje.
„308 jest wyłącznie kodem przekierowania”. Nie całkiem. Niestandardowe „308 Resume Incomplete” Google Drive używa tego kodu przy zatrzymanej wysyłce, w zupełnie innym znaczeniu. To przypomnienie, że 308 jest młodszy i mniej ustabilizowany w praktyce niż 301.
Dodatkowy kontrast — „stałe przekierowania tracą PageRank”. To nie jest główny temat artykułu, ale warto doprecyzować: wytyczne Google grupują 301 i 308 jako stałe przekierowania, których używa jako sygnału do przetworzenia nowego URL-a jako celu kanonicznego. To wskazuje na ciągłość, nie utratę wartości. Mów o udokumentowanym przetwarzaniu, a nie o ogólnej gwarancji, że nigdy nie traci się żadnego PageRanku.
Potwierdź i wdroż 308
Najbardziej użyteczne działanie przy 308 to sprawdzenie rzeczywistego kodu na przewodzie — najczęstszy problem nie wynika z przeglądarki, lecz z warstwy narzędziowej, która po cichu obniża zamierzony 308 do 301 albo nie emituje przekierowania.
Sprawdź kod statusu za pomocą curl
# Show only the response headers; -I sends a HEAD request.
curl -sI https://example.com/old-path | head -n 1
# → HTTP/1.1 308 Permanent Redirect (what you want)
# → HTTP/1.1 301 Moved Permanently (your layer downgraded it)Aby potwierdzić, że metoda rzeczywiście jest zachowana przy POST (to cały sens 308), podąż za przekierowaniem przez -L i obserwuj, co dociera do celu — -X POST z --data pozostanie POST-em na całej trasie tylko wtedy, gdy serwer zwróci 308/307:
curl -sIL -X POST --data '{"sku":"A-100"}' \
-H 'Content-Type: application/json' \
https://api.example.com/v1/orders
# Inspect each hop's request line; a 308 keeps it "POST", a 301 may show "GET".Prześledź cały łańcuch
Jeśli ścieżka ma więcej niż jeden skok, wypisz każdy kod statusu, aby zauważyć obniżenie albo niezamierzony dodatkowy etap:
curl -sIL https://example.com/old-path \
| grep -iE '^HTTP/'
# Each line is one hop. Collapse chains to a single hop where you can.Sprawdź cache 308 przed wycofaniem
RFC 9110 uznaje 308 za heurystycznie buforowalny — klient albo pośrednik może go zapamiętać nawet bez jawnego nagłówka Cache-Control. Błędny 308, który chcesz wycofać, może więc być serwowany z cache długo po poprawieniu reguły źródłowej. Zanim uznasz, że przekierowanie „utknęło”:
- Sprawdź zarówno nowego klienta (tryb prywatny, bez wcześniejszej wizyty), jak i klienta, który wcześniej odwiedził stary URL — zachowanie z cache i bez niego może się różnić.
- Wykonaj
curl -sIi sprawdź nagłówkiCache-Control,ExpiresorazAge. - Osobno przetestuj zwykły GET i reprezentatywne żądanie inne niż GET; cache może działać różnie dla metod.
- Jeśli musisz wycofać 308, jawnie wyczyść cache edge/CDN. Usunięcie reguły źródłowej może nie wystarczyć, a klient, który zapisał stare przekierowanie, nie poprosi o nie ponownie.
Konsola Chrome DevTools — sprawdź przekierowanie w przeglądarce
Wklej ten fragment do konsoli DevTools (F12 → Console), aby zobaczyć końcowy URL i status bez opuszczania strony. Pobranie z ręcznym trybem przekierowania pokazuje status pierwszej odpowiedzi:
// Reports the status of the first response (the redirect itself), not the target.
fetch('https://example.com/old-path', { method: 'HEAD', redirect: 'manual' })
.then(r => console.log('type:', r.type, 'status:', r.status || '(opaqueredirect)'));
// Follow the chain and log where it lands:
fetch('https://example.com/old-path', { method: 'HEAD', redirect: 'follow' })
.then(r => console.log('final URL:', r.url, 'final status:', r.status));Bookmarklet — jednym kliknięciem sprawdź odpowiedź URL
Przeciągnij zakładkę z tym adresem URL na pasek zakładek, a następnie kliknij ją na dowolnej stronie, aby poprosić o URL i wyświetlić końcowy status oraz adres docelowy:
javascript:(function(){var u=prompt('URL to check:',location.href);if(!u)return;fetch(u,{method:'HEAD',redirect:'follow'}).then(function(r){alert('Final status: '+r.status+'\nLanded on: '+r.url);}).catch(function(e){alert('Error: '+e);});})();Wdrożenie 308 na serwerze
Apache (.htaccess) — użyj mod_rewrite z jawnym R=308:
RewriteEngine On
RewriteRule ^old-path/?$ /new-path [R=308,L]nginx — return 308 jest dokładne i jednoznaczne:
location = /old-path {
return 308 https://example.com/new-path;
}Express.js (Node) — przekaż kod statusu do redirect():
app.all('/api/v1/orders', (req, res) => {
// 308 keeps the POST body intact on the way to /api/v2/orders
res.redirect(308, '/api/v2/orders');
});Next.js — ustaw permanent: true; wygeneruje to 308 (stałe przekierowania Next są kodami 308):
// next.config.js
module.exports = {
async redirects() {
return [
{ source: '/api/v1/:path*', destination: '/api/v2/:path*', permanent: true },
];
},
};Zachowanie frameworków i warstwy hostingu różni się między wersjami. Obsługa przekierowań w Next.js może zależeć od wersji i miejsca wywołania — wpis redirects() w next.config.js, wywołanie permanentRedirect() w Server Action czy odpowiedź strumieniowa nie muszą zwrócić tego samego kodu. To samo dotyczy wersji modułów Apache/nginx oraz CDN-u czy proxy przed originem. Traktuj fragmenty jako punkt wyjścia, nie gwarancję, i sprawdź bieżącą dokumentację własnej wersji.
Po wdrożeniu któregokolwiek rozwiązania ponownie wykonaj test curl -sI, aby potwierdzić, że na przewodzie rzeczywiście pojawia się 308 — to właśnie ten krok ludzie pomijają, a potem żałują.
Narzędzia do potwierdzenia 308 na przewodzie
Bezpłatne narzędzia Patricka
- Redirect Checker — prześledź jeden URL albo szybką partię, potwierdź pierwszą odpowiedź
308, poprawny cel i zdrową odpowiedź końcową. - Bulk HTTP Status Code Checker — sprawdź do 500 przeniesionych URL-i, odfiltruj nieoczekiwane odpowiedzi 301/302/307 i wyeksportuj łańcuchy albo pętle do naprawy.
Potwierdź ścisłe zachowanie, gdy ma znaczenie
curlz bezpiecznym ładunkiem testowym — odtwórz prawdziwą metodę na środowisku testowym lub bez skutków ubocznych i podąż za przekierowaniem. Potwierdź, że źródło emituje 308.- Logi aplikacji i bramy API — sprawdź, czy cel otrzymał tę samą metodę, typ treści i dane. Checker dowodzi statusu i celu, a logi odbiorcy dowodzą zachowania metody od początku do końca.
- Panel Network w DevTools — przydatny przy formularzach i logowaniu, ale webhooki i klienty API testuj osobno, bo interoperacyjność jest powodem wyboru 308 zamiast 301.
- Google Search Console URL Inspection — dla indeksowalnych URL-i stron sprawdź, czy stałe przeniesienie jest przetwarzane jak 301 i czy cel został wybrany jako kanoniczny.
Sprawdź się: 308 Permanent Redirect
Pięć krótkich pytań o 308, jego pochodzenie i traktowanie przez wyszukiwarki. Wybierz odpowiedź przy każdym, a potem sprawdź wynik.
Materiały warte uwagi
Moje teksty
- 11 typów przekierowań i ich wpływ na SEO (z Joshuą Hardwickiem) — definicja 308, ujęcie „dla SEO to to samo, ale przy formularzach liczy się metoda” oraz hierarchia, w której 308 i 301 zajmują najwyższe miejsce.
- Kody statusu HTTP i ich wpływ na SEO — wyjaśnienie, że 308 ma funkcję 301, ale nie pozwala przełączać POST i GET, oraz że 308 konsoliduje sygnały tak jak 301.
- Migracja witryny wymaga czegoś więcej niż listy kontrolnej — dlaczego przy stałej migracji wybieram 301 albo 308, nie 302/307.
- Wprowadzenie do technicznego SEO — miejsce przekierowań w szerszym obrazie.
Z branży
- Przekierowania i wyszukiwarka Google — oficjalny przewodnik Google, który wymienia 301 i 308 razem jako opcje stałe.
- Kody statusu HTTP, błędy sieci i DNS oraz Google Search — dokument określający 308 jako „Equivalent to 301” i przypominający o różnicy semantycznej.
- RFC 9110 — semantyka HTTP — aktualna specyfikacja; definicja 301 wskazuje 308 jako rozwiązanie niepożądanej zamiany POST na GET.
- RFC 7538 — kod statusu HTTP 308 (stałe przekierowanie) — standard, który wprowadził 308.
- MDN — stałe przekierowanie 308 — semantyka zachowania metody i treści oraz uwaga Google Drive „Resume Incomplete”.
- caniuse — kod statusu HTTP 308 — tabela obsługi przeglądarek, która obala mit kruchości 308.
- Bing traktuje przekierowania 308 tak samo jak 301 (Search Engine Roundtable) — potwierdzenie Fabrice’a Canela z 2024 roku.
- Google oficjalnie traktuje przekierowania 308 jak 301 (Search Engine Roundtable) — kontekst wypowiedzi Illyesa o scalaniu 308 z 301.
Dziennik zmian
Zaktualizowano 8 sie 2026.
Podsumowanie redakcyjne i zapisane szczegóły zmian.Szczegóły zmian
-
Szczegółowe uwagi dotyczące zmian są obecnie dostępne po angielsku.
Pełne porównanie jest niedostępne — dla tej wersji nie zarchiwizowano wcześniejszej migawki.
Zaktualizowano 17 lip 2026.
Podsumowanie redakcyjne i zapisane szczegóły zmian.Szczegóły zmian
-
Szczegółowe uwagi dotyczące zmian są obecnie dostępne po angielsku.
Pełne porównanie jest niedostępne — dla tej wersji nie zarchiwizowano wcześniejszej migawki.
Try it live
This is a real endpoint on this site — not a simulation.
Hit it from the button, open it in a new tab, or
curl -i it from your terminal, and the server answers with the actual status code this article is about.