Správné přesměrovat pomocí 301 nebo 302? Plus příklad v PHP
V době dynamických webů je běžné přesměrování stránek na úrovni HTTP protokolu. Zejména vhodné je to například po vyplnění formuláře, zabrání se tak například opětovnému, nechtěnému odeslání. V jiném případě se přesměrování používá v případě změny url dokumentu nebo celé domény webové aplikace. V obou případech se jedná o situaci, kdy server pomocí HTTP protokolu prohlížeči pošle hlavičku s odkazem na nové umístění dokumentu. Prohlížeč na to konto pošle nový požadavek na novou adresu dokumentu.
Přesto bychom měli rozlišovat minimálně tyto dva zméněné případy. V případě přesměrování po odeslání formuláře se jedná o jednorázové přesměrování, často může být cílová adresa závislá na hodnotách formuláře. V tomto případě nelze s jistotou říci, kam má být při dalším odeslání uživatel přesměrován (použijeme přesměrování 302 Found). V druhém případě je ovšem přesměrování trvalé a zejména indexační roboti vyhledávačů mohou původní adresu ze své databáze odstranit a nahradit ji novou (použijeme přesměrování 301 Moved permanently).
Existují i další typy přesměrování pomocí kódu 3xx, o kterých se dozvíte na webu w3 a na wikipedii, ovšem podle všeho nemusí být všechny implementovány ve všech prohlížečích. Nicméně minimálně kódy 301 a 302 by podporovány být měly a všechny kromě 301 by měly být bez problému možné nahradit pomocí 302.
Jak provést přesměrování v PHP:
Přesměrování se v PHP provede zasláním jiné než standardní HTTP hlavičky, tedy funkcí header(). V tuto dobu zpravidla zpracování požadavku na straně serveru končí, proto je po zaslání hlavičky volána funkce exit().
// permanentni presmerovani
header("HTTP/1.1 301 Moved Permanently");
header("Location: www.seznam.cz/nova-adresa-stranky/");
exit();
// presmerovani po zaslani formulare
header("HTTP/1.1 302 Found");
header("Location: www.seznam.cz/formular-byl-odeslan/");
exit();
Jak přechytračit Captcha Resolver (20.01.2010)




