Co znamená HTTP 302 a kdy ho použít
Autor: Samuel Krištof
HTTP 302 (302 Found) je stavový kód pro dočasné přesměrování. Server jím prohlížeči řekne, že stránka je teď jinde, a novou adresu mu pošle v hlavičce Location. Prohlížeč návštěvníka přesměruje sám. Google ve výsledcích dál ukazuje původní adresu, protože počítá s tím, že se obsah na ni vrátí.

Obsah článku
302 x 301?
Rozhoduje jedna otázka: vrátí se obsah na původní adresu? Když ano, použijte 302. Když ne, patří tam přesměrování 301. Ostatní typy přesměrování se od nich liší hlavně tím, co prohlížeč udělá s odeslaným formulářem. Google navíc bere 307 stejně jako 302 a 308 stejně jako 301.
| Kód | Změna | Kterou adresu ukáže Google | Odeslaný formulář (POST) | Kdy použít |
|---|---|---|---|---|
| 301 | trvalá | novou | prohlížeč ho může poslat jako GET | stránka se přesunula natrvalo |
| 302 | dočasná | původní | prohlížeč ho pošle jako GET | údržba, A/B test, sezónní akce |
| 303 | dočasná | původní | vždy jako GET | potvrzení po odeslání formuláře |
| 307 | dočasná | původní | zůstane POST | dočasná změna u formulářů a API |
| 308 | trvalá | novou | zůstane POST | trvalá změna u formulářů a API |
Kód 304 do tabulky nepatří. Nejde o přesměrování, server jím jen říká, že se obsah od minulé návštěvy nezměnil.
Co s 302 udělá Google
Googlebot (robot, který pro Google prochází weby) přesměrování následuje, ale ve výsledcích vyhledávání nechá původní adresu. Podle dokumentace Googlu je 302 jen slabý signál, že má zpracovat cílovou stránku. U 301 je ten signál silný.
Cílová stránka se do indexu dostat může, pokud ji podpoří jiné signály (třeba vlastní kanonická URL).
Na webech často čtete, že 302 „nepřenáší PageRank“. Google to v dokumentaci netvrdí. Píše jen, kterou adresu u dočasného přesměrování ukáže ve výsledcích. Když tam chcete vidět novou adresu, nastavte 301.
Kdy 302 použít
302 dává smysl tam, kde víte, že se původní stránka vrátí:
- Služba dočasně nejde.
Návštěvníka pošlete na stránku, která vysvětlí, co se děje, a původní adresa zůstane ve výsledcích. Tenhle příklad uvádí přímo Google.
- A/B test, kde má každá varianta vlastní adresu.
Google u testů výslovně doporučuje 302, ne 301.
- Sezónní akce.
Kategorie s vánočními dárky v létě dočasně vede na novinky a v listopadu se vrátí.
Výjimka:
Jazyk a země jsou výjimka. Google radí návštěvníky automaticky nepřesměrovávat podle toho, jakým jazykem asi mluví. Googlebot chodí většinou z USA a bez nastaveného jazyka, takže by ostatní verze webu nemusel najít. Místo přesměrování použijte hreflang a odkazy na jazykové verze.
Co když systém 302 neumí
U jednoho klienta jsme dočasně pozastavili službu v jednom městě. Plugin na přesměrování uměl jen 301, takže stránka teď vede trvale na úvodní stránku, i když se služba má vrátit.
Náhrada existuje: meta refresh, tedy příkaz v kódu stránky, který návštěvníka po nastavené době pošle jinam. Se zpožděním (třeba 5 sekund) ho Google bere jako dočasné přesměrování. Návštěvník mezitím uvidí krátkou informaci, co se děje.
Jak najít 302 na vašem webu
- V prohlížeči stiskněte F12, otevřete záložku Network a načtěte stránku. Ve sloupci Status uvidíte 302 a v hlavičkách adresu Location.
- V terminálu spusťte „curl -I https://vasweb.cz/stranka“.
- U celého webu pusťte crawler (program, který projde všechny stránky, třeba Screaming Frog). Vypíše všechna přesměrování najednou.
Kde se může schovávat
- Přechod z http na https nebo na www.
Je to trvalá změna, takže sem patří 301.
- Přihlášení a košík.
Tady je 302 v pořádku, tyhle stránky ve výsledcích stejně mít nechcete.
- Šablony a pluginy, které přesměrovávají vlastním kódem.
Typ přesměrování v nich nikdo nenastavuje, takže ho ověřte.
Najdete 302 u trvalé změny? Přepněte ji na 301. Návštěvník rozdíl mezi 301 a 302 nepozná, proto chybný typ odhalí až kontrola, třeba při SEO analýze.
Jak 302 nastavit
Na Apache stačí řádek v souboru .htaccess, na Nginx jedna direktiva. Ve WordPressu zvolíte typ 302 přímo v pluginu na přesměrování. Další pravidla najdete na stránce o htaccess.
# .htaccess (Apache)
Redirect 302 /puvodni-stranka https://vasweb.cz/docasna-strankalocation = /puvodni-stranka {
return 302 https://vasweb.cz/docasna-stranka;
}Chystáte změny na webu?
Než cokoli přesměrujete, projdeme s vámi, kde má být 301 a kde stačí 302. Ať po spuštění nepřijdete o poptávky.
Domluvit schůzkuČasté otázky
Jak dlouho může 302 zůstat zapnutá?
Google pevný limit neuvádí. U A/B testů ale upozorňuje, že test běžící zbytečně dlouho může brát jako snahu oklamat vyhledávač. Jakmile víte, že se obsah na původní adresu nevrátí, přepněte na 301.
Je 302 Found totéž co Moved Temporarily?
Ano, je to stejný kód. Moved Temporarily je název z HTTP/1.0, od HTTP/1.1 se kód jmenuje Found. Protože prohlížeče s 302 zacházely různě, přibyly zároveň kódy 303 a 307 s jasně daným chováním.
Může 302 způsobit duplicitní obsah?
Může, pokud je cílová stránka dostupná i bez přesměrování a má vlastní signály, že je hlavní. Google ji pak může zaindexovat vedle původní.
Zdroje
- Google Search Central: Redirects and Google Search
- Google Crawling Infrastructure: How HTTP status codes affect Google's crawlers
- Google Search Central: Minimize A/B testing impact in Google Search
- Google Search Central: Managing multi-regional and multilingual sites
- MDN: 302 Found
- MDN: 301 Moved Permanently
- MDN: 308 Permanent Redirect
- RFC 1945: HTTP/1.0
- RFC 2616: HTTP/1.1, sekce 10