Co je HTTP 302 a kdy použít dočasné přesměrování

HTTP 302 je stavový kód, kterým server sděluje, že požadovaný obsah je dočasně dostupný na jiné URL adrese. Celý název odpovědi je 302 Found. Prohlížeč po jejím obdržení obvykle automaticky otevře adresu uvedenou v hlavičce Location, takže návštěvník samotný kód většinou ani neuvidí. Původní URL ale zůstává hlavní adresou, protože přesun nemá být trvalý.

Kód 302 patří do skupiny stavových kódů 3xx, které řídí přesměrování. Není to klasická chyba webu. Jde o pokyn klientovi, tedy například prohlížeči, vyhledávacímu robotovi nebo aplikaci komunikující přes API, aby pokračoval na jiném místě. Důležitá je právě dočasnost. Pokud byla stránka přesunuta natrvalo, vhodnější bývá HTTP 301.

Jak HTTP 302 funguje:

Celý proces proběhne během několika požadavků a odpovědí. Návštěvník zadá původní adresu nebo klikne na odkaz. Server požadavek přijme, ale místo obsahu vrátí odpověď se stavem 302 a cílovou adresou v hlavičce Location. Prohlížeč tuto adresu načte novým požadavkem a uživateli zobrazí cílovou stránku.

  • Požadavek na původní URL: Prohlížeč se zeptá serveru na konkrétní stránku nebo soubor.
  • Odpověď 302 Found: Server oznámí, že se obsah nyní nachází jinde.
  • Hlavička Location: Obsahuje cílovou URL, na kterou má klient pokračovat.
  • Nový požadavek: Prohlížeč automaticky požádá o cílovou stránku a tu následně zobrazí.

Zjednodušená odpověď serveru může vypadat takto:

HTTP/1.1 302 Found
Location: https://example.cz/docasna-stranka

U běžného požadavku metodou GET je výsledek přímočarý. U metod jako POST je situace historicky méně jednoznačná. Některé klienty mohou při následném požadavku změnit POST na GET. Pokud aplikace potřebuje bezpečně zachovat původní metodu i tělo požadavku, přesnější volbou je kód 307 Temporary Redirect. Pokud má být další požadavek naopak záměrně proveden metodou GET, používá se často 303 See Other.

HTTP 302 v praxi:

Dočasné přesměrování dává smysl tehdy, když se původní adresa bude znovu používat nebo když zatím nechcete návštěvníkům a vyhledávačům tvrdit, že se obsah odstěhoval definitivně. Typickým příkladem je krátkodobá údržba stránky. Návštěvníky můžete přesměrovat na informační stránku a po dokončení údržby původní URL opět zprovoznit.

Dalším příkladem jsou sezónní kampaně. E-shop může během akce dočasně směrovat obecnou adresu nabídky na aktuální landing page. Po skončení kampaně se přesměrování odstraní nebo se cíl změní. Kód 302 se používá také při A/B testování, geografickém směrování, dočasné nedostupnosti produktu nebo po přihlášení, kdy aplikace uživatele pošle na jeho účet.

Ve WordPressu lze 302 nastavit pomocí pluginu pro přesměrování, pravidlem na serveru nebo přímo v kódu. Samotný způsob implementace je méně důležitý než správná volba statusu. Plugin, který pošle návštěvníka jinam, ale vrací 200 nebo používá JavaScriptové přesměrování bez rozmyslu, může ztížit diagnostiku i práci vyhledávačů.

HTTP 302 můžete zkontrolovat v nástrojích pro vývojáře v prohlížeči, v SEO crawleru nebo příkazem curl -I. Nesledujte jen konečnou stránku. Důležitý je celý řetězec: původní URL, vrácený kód, hodnota hlavičky Location a stav cílové stránky. Některé nástroje přesměrování automaticky následují a ukážou pouze konečný kód 200, takže samotnou 302 snadno přehlédnete.

Jaký je rozdíl mezi HTTP 302 a 301:

Kód 301 znamená trvalé přesměrování. Říká, že obsah má nové stálé místo a klienti mohou do budoucna používat novou URL. Kód 302 naopak říká, že změna je dočasná a původní adresa má zůstat v oběhu. Prakticky se oba kódy návštěvníkovi mohou jevit stejně, protože prohlížeč ho v obou případech pošle na jinou stránku. Rozdíl je hlavně v tom, jak odpověď interpretují vyhledávače, cache a další klienti.

Pro SEO je tato volba podstatná. Při skutečně dočasném přesunu by měl vyhledávač zpravidla ponechat původní URL jako hlavní. Při trvalém přesunu má naopak dostat jasný signál, že má časem nahradit původní adresu cílovou. Dlouhodobě ponechaná 302 proto může způsobit zmatek: vyhledávač musí z dalších signálů odhadovat, zda je přesun ještě opravdu dočasný.

Jednoduché pravidlo zní: pokud očekáváte návrat původní stránky, použijte 302. Pokud se stará adresa už nemá vrátit, použijte 301. Při změně domény, trvalé úpravě struktury webu nebo sloučení duplicitních stránek je obvykle správně 301. Při krátké odstávce, dočasné kampani nebo testu je obvykle správně 302.

Proč je HTTP 302 důležitý:

Správné přesměrování chrání použitelnost webu. Návštěvník se dostane k relevantnímu obsahu, i když je původní stránka krátkodobě mimo provoz. Zároveň neztrácíte možnost vrátit původní URL do původního stavu. To se hodí při správě kampaní, e-shopů i rozsáhlejších webů.

Kód má dopad také na analytiku a výkon. Každé přesměrování přidává další síťový požadavek, takže dlouhé řetězce zpomalují načítání. Mohou také komplikovat měření návštěvnosti, předávání parametrů kampaní nebo práci cookies. Přesměrování proto nastavujte přímo na finální cíl a pravidelně kontrolujte, zda nevznikly smyčky typu A na B a B zpět na A.

Při tvorbě webových stránek je dobré vést přehled aktivních přesměrování a znát důvod každého z nich. Náhodně zvolený kód může fungovat na pohled správně, ale posílat špatný signál vyhledávačům nebo aplikacím. U HTTP odpovědí zkrátka nestačí, že návštěvník nakonec něco vidí. Záleží i na tom, jak se k výsledku dostal.

Časté otázky:

Je HTTP 302 chyba?

Ne. HTTP 302 je platná odpověď serveru pro dočasné přesměrování. Problémem se stává až tehdy, když přesměrování vzniklo omylem, vede na špatnou stránku, tvoří smyčku nebo se používá dlouhodobě tam, kde měl být kód 301.

Má HTTP 302 vliv na SEO?

Ano. Kód 302 signalizuje, že původní URL má zůstat hlavní, protože přesun je dočasný. Pokud je změna ve skutečnosti trvalá, použijte 301. Vyhledávače mohou dlouhodobou 302 časem interpretovat podle dalších signálů, ale není rozumné spoléhat na to, že napraví nepřesné technické nastavení.

Jak dlouho může být přesměrování 302 aktivní?

HTTP neurčuje pevný časový limit. Přesměrování může běžet dny i měsíce, pokud je přesun skutečně dočasný. Jakmile víte, že se původní obsah nevrátí, změňte kód na trvalé přesměrování 301 a upravte interní odkazy tak, aby mířily rovnou na nový cíl.

Jaký je rozdíl mezi 302 a 307?

Oba kódy označují dočasné přesměrování. Kód 307 ale jednoznačně vyžaduje zachování původní HTTP metody a těla požadavku. U 302 může klient z historických důvodů změnit například POST na GET. Pro běžnou webovou stránku načítanou přes GET bývá 302 dostačující, pro citlivější aplikační tok může být vhodnější 307.