Přesměrování 301: kdy ho použít a jak ho nastavit
Trvalé přesměrování 301 patří všude tam, kde se adresa stěhuje natrvalo: sjednocení domény, změna struktury adres, redesign, převod e-shopu na jinou platformu. Dočasné 302 a 307 si nechte na odstávku, na kampaňovou stránku nebo na test varianty, tedy tam, kde se původní adresa za pár dnů vrátí. Na běžném českém webu řešíte v devíti případech z deseti právě 301.
Jaký je rozdíl mezi 301, 302, 307 a 308?
Kódy se liší ve dvou věcech: jestli je změna trvalá, a jestli se zachová metoda požadavku. To druhé vás při běžném SEO trápit nemusí, roboti chodí přes GET. Řeší se to u formulářů a rozhraní API, kde by překlopení POST na GET rozbilo odesílání dat.
| Kód | Typ | Zachová metodu | Kdy sáhnout |
|---|---|---|---|
| 301 | trvalé | ne | Změna adresy natrvalo, sjednocení domény, stěhování webu. Výchozí volba. |
| 302 | dočasné | ne | Odstávka na pár hodin, dočasná kampaňová stránka, testování varianty. |
| 307 | dočasné | ano | Dočasné přesměrování, kde jde o POST. Také interní odpověď prohlížeče při HSTS. |
| 308 | trvalé | ano | Trvalé přesměrování se zachováním metody. Pro SEO se chová stejně jako 301. |
Google potvrdil už v roce 2016, že samotné přesměrování hodnotu odkazů nesnižuje, a to ani u 302. Rozdíl je v tom, kterou adresu si vyhledávač vybere jako kanonickou: u 301 cíl, u 302 obvykle zdroj. Nechte 302 běžet rok a Google si ji nakonec nejspíš přebere jako trvalou. Do té doby ale máte v indexu zmatek, který mít nemusíte. Jak se v detailech rozhoduje Seznam, srozumitelně popsané nikde není, u 301 jsem ale za ta léta nezaznamenal, že by se choval jinak. Ostatní odpovědi serveru rozebírá článek o stavových kódech HTTP a jejich vlivu na SEO.
Ještě poznámka k 307. Když web posílá hlavičku HSTS, prohlížeč si sám přepíše http na https a v nástrojích to uvidíte jako 307. Odehrává se to ale v prohlížeči, ne na serveru, takže robot vyhledávače o tom neví. HSTS proto skutečné serverové přesměrování nenahrazuje, jen ho doplňuje. Souvislosti popisuje text o bezpečnostních hlavičkách.
Bez sjednocení domény provozujete čtyři weby místo jednoho
Narazím na to při každém třetím auditu. Web běží zároveň na http i https, s www i bez www, takže na jednu jedinou úvodní stránku vedou čtyři různé adresy. Vyhledávač je musí rozsoudit sám. Někdy to zvládne, jindy si vybere variantu, kterou nechcete.
Zkouška zabere dvě minuty. Napište do adresního řádku postupně všechny čtyři varianty a sledujte, kde skončíte. Správný výsledek: všechny čtyři vás pošlou na tutéž adresu, a to jedním skokem. Když se z http bez www dostanete na cíl přes dvě mezizastávky, máte řetězec.
Volba mezi www a variantou bez www je čistě kosmetická, vyhledávačům je jedno, co si vyberete. Horší je vybrat si dvakrát. Zvolte jeden tvar a držte se ho všude: v XML mapě webu, v kanonických značkách, v interních odkazech, v Search Console, ve Skliku i ve feedech pro Heureku a Zboží.cz. Totéž platí o lomítku na konci. Adresy /kontakt a /kontakt/ jsou pro vyhledávač dvě různé stránky. Jeden tvar vyberte, druhý na něj přesměrujte a podepřete to kanonickou adresou. Přechod na šifrované spojení rozebírá samostatný návod o certifikátu HTTPS a SEO.
Proč zkracovat řetězce přesměrování?
Řetězec vznikne ve chvíli, kdy jedno přesměrování ukazuje na adresu, která sama přesměrovává. V praxi to vypadá takhle: http://vasedomena.cz/stary-clanek jde na https://vasedomena.cz/stary-clanek, ta na https://www.vasedomena.cz/stary-clanek a teprve ta na https://www.vasedomena.cz/novy-clanek/. Tři skoky místo jednoho.
Googlebot podle vyjádření Johna Muellera zvládne v jednom průchodu zhruba pět skoků a o zbytek se postará až při dalším procházení. Celkový strop se uvádí kolem deseti, přesné číslo ale Google nikdy závazně nepotvrdil a spoléhat se na něj nemá smysl. Doporučení zní zůstat pod pěti. Sám si hlídám hranici dvou skoků, ideál je nula navíc.
- Každý skok je další dotaz na server, tedy zhruba 100 až 300 ms navíc pro návštěvníka.
- Robot spotřebuje rozpočet procházení na adresy, které žádný obsah nemají.
- Některé starší aplikace a nástroje na dlouhých řetězcích končí.
- Smyčka, kdy A ukazuje na B a B zpátky na A, skončí v prohlížeči chybou ERR_TOO_MANY_REDIRECTS a stránka je mrtvá pro všechny.
Oprava je nudná a funguje: v seznamu pravidel přepište cíl na finální adresu. Když jste před třemi lety poslali A na B a letos B na C, změňte první pravidlo rovnou na C. Staré pravidlo nemažte, jen mu opravte cíl.
Před stěhováním webu si udělejte mapu adres
Mapa starých a nových adres je obyčejná tabulka o dvou sloupcích. Bez ní se stěhování pořádně udělat nedá a většina propadů návštěvnosti po redesignu vzniká přesně tady.
- Vytáhněte seznam všech adres, které mají hodnotu. Zdroje: stávající XML mapa webu, Search Console (report Stránky a Výkon za posledních 12 až 16 měsíců), analytika, výstup z crawleru, přístupové logy serveru za poslední rok.
- Seznamy sloučte, odstraňte duplicity a seřaďte podle návštěvnosti a počtu zpětných odkazů. Prvních 200 adres obvykle drží většinu hodnoty celého webu.
- Ke každé staré adrese doplňte novou, kus po kuse. Cílem je stránka se stejným tématem, ne kategorie „něco podobného“.
- Kde ekvivalent neexistuje, napište do druhého sloupce 404 nebo 410. Vědomá 404 je lepší než falešné přesměrování.
- Otestujte na testovací verzi, nejlépe dávkově přes crawler, který u každé adresy ukáže kód i počet skoků.
- Spusťte všechno naráz v okamžiku přepnutí. Ne postupně po sekcích.
Starou mapu webu nechte v Search Console ještě zhruba půl roku po přepnutí. Zní to protismyslně, robotovi to ale pomůže staré adresy rychleji projít a přesměrování uvidět.
Kde přesměrování nastavíte?
Apache a soubor .htaccess. Nejběžnější varianta na českých sdílených hostinzích typu Wedos nebo Forpsi. Pravidlo, které vyřeší https i www jedním skokem, vypadá takto:
RewriteEngine OnRewriteCond %{HTTPS} off [OR]RewriteCond %{HTTP_HOST} ^vasedomena.cz$ [NC]RewriteRule ^(.*)$ https://www.vasedomena.cz/$1 [R=301,L]
Podstatná je ta dvojice podmínek spojená příznakem OR, právě ony zajistí, že se skoky nesčítají. Před úpravou si soubor zazálohujte. Překlep v .htaccess shodí celý web na chybu 500 a dozvíte se to obvykle až od klienta.
Nginx. Zápis patří do konfigurace serveru, soubor .htaccess nginx vůbec nečte. Typicky return 301 https://www.vasedomena.cz$request_uri; v bloku pro staré varianty domény. Na vlastním serveru to zvládnete sami, u spravovaného hostingu píšete podpoře.
WordPress. Nejrozšířenější je zásuvný modul Redirection s více než dvěma miliony aktivních instalací. Umí hromadný import z CSV, hlídá 404 a loguje, co se skutečně přesměrovalo. Alternativou je správce přesměrování v Rank Math nebo v placené verzi Yoastu. Jedna věc se přehlíží: modul řeší přesměrování až v PHP, tedy pomaleji než server. U několika set pravidel to nepoznáte. U deseti tisíc při migraci velkého e-shopu ano, a tam pravidla patří do konfigurace serveru.
Shoptet. V administraci pod Marketing, Základní SEO, Přesměrování adres (URL). Zadáte starou a novou adresu, u každé vyberete 301 nebo 302, hromadně to jde nahrát přes CSV. Při změně adresy produktu nebo kategorie si Shoptet přesměrování založí sám. Upgates má obdobnou obrazovku.
Ať zvolíte cokoli, výsledek si po nasazení ověřte zvenčí, ne jen v administraci. Naše bezplatná SEO kontrola webu projde adresy a ukáže, kde končíte na řetězci nebo na chybovém kódu.
Které chyby vidím u klientů nejčastěji?
- Všechno na úvodní stránku. Nejdražší chyba při redesignu. Google to u nesouvisejících stránek vyhodnotí jako měkkou 404, adresu z indexu stejně vyhodí, a návštěvník místo produktu uvidí homepage a odejde. Když ekvivalent nemáte, vraťte poctivou 404, nebo 410 u věcí, které se už nikdy nevrátí.
- Nasazování po částech. Půlka adres přesměrovaná v pondělí, zbytek za tři týdny. Vyhledávač mezitím vidí rozbitý web a propad se prohlubuje. Buď všechno naráz, nebo nic.
- Ztráta parametrů v adrese. U mod_rewrite se dotazovací část připojí k cíli sama, dokud v cíli žádný parametr neuvedete. Jakmile do cíle napíšete vlastní parametr, musíte přidat příznak QSA, jinak přijdete o značky UTM i o filtry. Pozná se to tak, že v analytice zmizí zdroje kampaní.
- 302 tam, kam patří 301. Řada modulů a administrací nabízí 302 jako výchozí volbu. Zkontrolujte to, klienti to nastavují omylem.
- Zapomenuté feedy a reklamní sestavy. Po změně adres produktů míří XML feed pro Heureku a Zboží.cz i odkazy v kampaních ve Skliku pořád na staré adresy. Přesměrování to sice přežije, ale zbytečně: opravte adresy rovnou u zdroje.
- Staré adresy zakázané v robots.txt. Když robot nesmí starou adresu stáhnout, nikdy neuvidí, že přesměrovává. Než ji zakážete, nechte ji projít. Postup popisuje návod k souboru robots.txt.
- Interní odkazy nechané na starých adresách. Menu, patička, odkazy v článcích. Každý takový odkaz uměle vyrábí skok navíc. Přepište je na finální adresy, souvislosti najdete v textu o interním prolinkování.
- Přesměrování přes JavaScript nebo meta refresh. Funguje to jen napůl. Meta refresh s nulovým zpožděním bere Google jako trvalé, signály ale přenáší slaběji a stránka se načítá pomaleji. Serverové řešení je vždycky lepší.
Jak dlouho nechat přesměrování běžet?
Napořád. Google uvádí jako minimum jeden rok, protože potřebuje starou adresu několikrát projít, než změnu zapíše natrvalo, a u málo navštěvovaných stránek to trvá měsíce. Mueller sám doporučuje spíš déle než rok.
Důvod pravidla po roce mazat jsem zatím nenašel. Řádek v konfiguraci nic nestojí a odkazy vedou z míst, o kterých nevíte: ze starých newsletterů, z oborových katalogů, z profilu na Firmy.cz, z ceníku v PDF, který má někdo v počítači od roku 2019. Zrušíte pravidla po dvou letech a tyhle odkazy skončí na 404. Dozvíte se to až z propadu.
Jediná pravidelná údržba, která dává smysl, je zkracování řetězců. Jednou za rok projděte seznam pravidel, opravte cíle na finální adresy a smažte duplicity. Rozbité odkazy, které přitom vyplavou, pomůže dohledat postup na hledání rozbitých odkazů. Samotná pravidla nechte být.
Časté dotazy
Přenese přesměrování 301 hodnotu odkazů na novou adresu?
Ano. Google od roku 2016 uvádí, že trvalým ani dočasným přesměrováním se hodnota odkazů neztrácí. Podmínkou je, že nová stránka pokrývá stejné téma jako ta stará. Přesměrování na nesouvisející stránku vyhodnotí vyhledávač jako měkkou 404 a nepřenese nic.
Jak poznám, že mám na webu řetězec přesměrování?
Nejrychleji tak, že si web projedete crawlerem, který u každé adresy ukáže stavový kód a počet skoků. Ruční test zvládnete taky: napište do prohlížeče starou adresu s http a bez www a sledujte, kolika zastávkami projdete, než skončíte na finální adrese. Cílem je jeden skok, dva jsou ještě přijatelné.
Mám smazané produkty přesměrovat, nebo nechat chybu 404?
Pokud existuje nástupce nebo hodně podobný produkt, přesměrujte na něj kódem 301. Když nástupce není, přesměrujte na nejbližší kategorii, ale jen tehdy, když to návštěvníkovi opravdu pomůže. U zboží, které se už nikdy nevrátí a nemá náhradu, je poctivá 404 nebo 410 lepší než přesměrování na úvodní stránku.
Související návody
JavaScript a SEO: kdy robot obsah uvidí a kdy ne
Google JavaScript spustí, ale s odkladem a ne vždycky. Seznam s ním pracuje omezeně. Obsah, na kterém závisí návštěvnost, patří do HTML.
Stránkování výpisů: jak ho udělat, aby se produkty indexovaly
Druhá a další strana výpisu je jediná cesta, kudy se robot dostane k produktům na konci. Většina chyb ve stránkování je proto přeindexováním naopak.
Stavové kódy HTTP: co který znamená pro vyhledávač
Kód odpovědi je první věc, kterou robot uvidí. Rozhoduje, jestli stránku vůbec zpracuje a jestli si má pamatovat starou adresu.
Pojmy z tohoto textu
- JSON-LD Formát zápisu strukturovaných dat. Vkládá se jako samostatný blok a nemíchá se do značek obsahu.
- Duplicitní obsah Tentýž nebo velmi podobný text na víc adresách. Není to postih, ale vyhledávač si vybere jednu verzi a ostatní potlačí.
- Smíšený obsah Stav, kdy se stránka načte přes HTTPS, ale některé její části se stahují přes nešifrované HTTP.
- llms.txt Textový soubor v kořeni webu, který jazykovým modelům shrnuje, co na webu je a kde to najdou.
- HSTS Hlavička, kterou prohlížeči nařídíte chodit na doménu výhradně přes HTTPS. Prohlížeč si to zapamatuje na zadanou dobu.
- Noindex Pokyn, kterým stránce zakážete objevit se ve výsledcích hledání. Stránka zůstane přístupná lidem i robotům, jen nepůjde do indexu.
Nevíte, jestli se vás to týká?
Pusťte kontrolu na svůj web a uvidíte, jestli tenhle problém máte. Trvá to necelou minutu.