Znalostní wiki OKF
rust / seo
Kapitola

SEO a technická nalezitelnost

SEO je nejdřív technická způsobilost: robots.txt není zámek, canonical, sitemapa i hreflang jsou jen signály, které Google může přebít. Search Console je jediný pohled jeho očima.

rustseocrawlindexrobots.txtcanonicalsitemapahreflangstructured dataSearch ConsoleNaposledy aktualizováno 14. června 2026

Někdo nechce, aby se interní stránka ukazovala ve výsledcích, tak ji zablokuje v robots.txt. Logické přání, špatný nástroj. robots.txt neřídí, co je v indexu. Řídí, co smí crawler stáhnout. Zablokovaná stránka se klidně objeví ve vyhledávání, jen bez popisku, pokud na ni vedou odkazy z jiných webů. A je to ještě o úroveň zákeřnější: aby Google poslechl noindex, musí stránku nejdřív stáhnout a tu značku přečíst. Když ji blokuješ v robots.txt, crawler dovnitř nevleze, noindex nikdy neuvidí, a tím ho znefunkčníš. Blokace, kterou jsi myslel jako zámek, je ve skutečnosti cedule „nevstupovat" pověšená přes dveře, za kterými je vzkaz „tuhle místnost zbourejte".

Tahle záměna je nejdražší technická chyba SEO a vede k principu, který drží celou kapitolu. Crawl a index jsou dvě různé věci a skoro každý nástroj, kterým je „ovládáš", je jen nápověda, ne příkaz. Canonical, sitemapa, hreflang, strukturovaná data: Google je čte, váží a může je přebít. Kdo čeká magii („nastavíme canonical a hotovo"), dostane zklamání. Kdo posílá konzistentní signály, dostane šanci.

Tahle kapitola není o klíčových slovech ani o copywritingu. Je o tom, jestli stroj tvůj obsah vůbec najde, stáhne, vykreslí a pochopí. Jednovětou definici pojmů jako canonical, redirect nebo sitemapa má společný slovník; tady jdeme do hloubky, kde se to láme.

Crawl, index, serving: tři fáze, ne dvě

Google Search běží ve třech krocích. Crawling stáhne text, obrázky a video. Indexing stránku zanalyzuje a uloží. Serving ji vrátí ve výsledcích. Renderování JavaScriptu není čtvrtá fáze, je součást indexingu, a právě tam se obsah ztrácí.

Indexace s JavaScriptem totiž běží na dvě vlny. První stáhne syrové HTML. Druhá pošle stránku do Web Rendering Service, headless Chrome, který spustí JS a domyslí zbytek. Mezi vlnami uběhne od pár hodin po týdny, podle render budgetu a podle toho, jak je web pro Google důležitý. Když je obsah až ve druhé vlně, čeká na frontu, která dojít nemusí. Proto title, canonical i hlavní obsah patří do HTML už z první vlny, ne až dorenderované na klientovi. Že o nalezitelnosti rozhoduje volba renderování, je tím pádem technický fakt, ne názor: čistý CSR může obsah z indexu vyřadit úplně.

robots.txt vs. noindex: co je crawl a co je index

Zopakujme to rozlišení, protože stojí za polovinou problémů v Search Console.

robots.txt s Disallow říká crawlerovi „sem nelez". Šetří server, řídí crawl budget. Neřídí index. Stránka blokovaná v robots může v indexu zůstat (bez popisku), pokud na ni vedou odkazy.

noindex říká „tuhle stránku nezařazuj do výsledků". Dává se buď meta tagem <meta name="robots" content="noindex">, nebo HTTP hlavičkou X-Robots-Tag (ta umí i ne-HTML soubory jako PDF). Když Googlebot noindex najde, stránku z indexu vyhodí bez ohledu na odkazy.

A v tom je háček: navzájem se vylučují. Aby noindex zabral, crawler musí stránku stáhnout a tag přečíst, takže nesmí být blokovaná v robots.txt. Chceš stránku ven z indexu? Dej jí noindex a crawl jí neblokuj, dokud ji Google znovu nestáhne a tag nepřečte. Teprve potom ji klidně zablokuj.

Canonical je nápověda, ne příkaz

rel="canonical" říká Googlu, kterou ze sady duplicitních nebo podobných URL považuješ za hlavní. Konsoliduje na ni signály z duplicit, hlavně odkazy, a určuje, která URL se zobrazí. Ale je to nápověda. Google může zvolit jinou kanonickou URL než ty, třeba když usoudí, že jiná verze má lepší obsah.

Z toho plyne praktický postoj. Canonical se neposílá jediným kanálem. Sčítá se: značka v hlavičce, 301 redirect, URL v sitemapě, interní odkazy. Čím víc těchhle signálů míří konzistentně na jednu URL, tím vyšší šance, že Google zvolí tu tvoji. Jeden canonical tag obklopený interními odkazy na jinou verzi je rozpor, a v rozporu rozhoduje Google, ne ty. Jak se mapa přesměrování a canonical politika fyzicky provedou při přepnutí, řeší redesign a spuštění a migrace.

Sitemapa: objevovací signál, ne příkaz k indexaci

Sitemapa říká „tyhle URL existují, podívej se na ně". Pomáhá objevit stránky, na které vede málo interních odkazů. Nezaručí zaindexování, je to nápověda.

Tvrdá pravidla. Jeden soubor pojme 50 000 URL nebo 50 MB nekomprimovaně, podle toho, co přijde dřív. Větší web se dělí do víc souborů spojených přes sitemap index.

A teď, co je v sitemapě k ničemu. Google ignoruje <priority> i <changefreq>. Nepiš je, neřídí crawl. Jediný element navíc, který má smysl, je <lastmod>, ale jen když je ověřitelně přesný. Google to formuluje jasně: když stránce sedmým rokem tvrdíš, že se změnila včera, Google ti přestane věřit. Nepřesný lastmod je horší než žádný. Buď ho generuj z reálné změny obsahu, nebo ho vynech.

hreflang potřebuje vzájemné odkazy

Vícejazyčný web říká hreflang anotacemi „tahle stránka má českou a anglickou verzi". Pravidlo, na kterém to nejčastěji padá: odkazy musí být vzájemné. Když česká verze ukazuje na anglickou, ale anglická neukazuje zpátky, Google celou anotaci ignoruje. Důvod je obranný: jinak by si cizí web mohl nárokovat, že je tvoje alternativa.

Chybějící zpětný odkaz je nejčastější hreflang chyba. Google dává trochu prostoru. Dvojici, která si odkazuje navzájem, zpracuje, i když je skupina jinde neúplná. Pro jazykový rozcestník nebo výchozí variantu je tu x-default. Která jazyková verze vlastně existuje a jak se trh dělí, je rozhodnutí informační architektury; hreflang ho jen technicky zapojí.

Structured data: způsobilost, ne ranking

JSON-LD strukturovaná data popisují stroji, co stránka je. Recept, produkt, článek, událost. Dělají ji způsobilou pro rich results, ty hezké výsledky s hvězdičkami, cenou nebo obrázkem. Nezaručují je. Google formuluje i tohle natvrdo: validní strukturovaná data neznamenají, že rich result bude.

A dvě věci, které se kolem schématu pořád pletou. Strukturovaná data nejsou faktor řazení. Manuální postih za jejich zneužití odebere způsobilost pro rich result, ale neovlivní, jak stránka ve výsledcích pozičně stojí. Schéma ti nezvedne pozici, jen mění, jak výsledek vypadá. Google doporučuje JSON-LD (nejsnáz se udržuje ve velkém) a validaci přes Rich Results Test. Title, meta description a canonical přitom nejsou nalepená SEO vrstva, jsou to pole obsahového modelu, stejně jako jsou alt text a názvy souborů z médií a podkladů přímý SEO signál.

Crawl budget se utratí za smetí

Velký web naráží na strop. Crawl budget je crawl capacity (kolik Google unese, aby nepřetížil server) krát crawl demand (jak moc o web stojí). Problém není, že by ho bylo málo. Problém je, kam se utratí.

Nejčastější žrout, který Googlu lidé hlásí, je faceted navigation. Každá kombinace filtrů je nová URL, a patnáct filtrů po osmi hodnotách vyrobí prakticky nekonečno adres, drtivou většinou prázdných nebo skoro stejných. Crawler na nich utratí rozpočet dřív, než dojde na hodnotný obsah. To není okrajový jev, facety stojí za podstatnou částí crawl problémů, neřízené spolykají až 99 % crawl budgetu.

Co s tím? Filtry, které nechceš indexovat, blokuj v robots.txt. Tady blokace crawlu dává smysl, šetříš rozpočet. Filtry, které crawlovat chceš, drž v čistém tvaru: standardní & jako oddělovač, konzistentní pořadí parametrů, prázdné kombinace vracej jako 404. IA rozhodne, jaká struktura vznikne; SEO ji udrží průchodnou pro stroje.

Search Console: jediný pohled Googlovýma očima

Žádný externí nástroj ti neřekne, co Google s tvými stránkami doopravdy udělal. Search Console ano, je to jediný pohled očima Googlu.

URL Inspection ukáže crawl, index a serving stav konkrétní URL přímo z indexu. Pozor na past, kterou skoro každý jednou spadne. Tlačítko Live Test neověří, že jsi zaindexovaný. Ověří jen, že Google stránku umí stáhnout právě teď. Zelený live test ≠ v indexu. Index status je z posledního crawlu, live test je aktuální dostupnost, to jsou dvě různé odpovědi. Žádný test nezaručí, že stránka v indexu skončí.

Page Indexing report (dřív Coverage) ukazuje stavy jako „Crawled – currently not indexed" nebo „Discovered – not indexed". To je diagnóza: Google stránku zná, ale nezařadil ji. Pro hromadnou kontrolu existuje URL Inspection API s limity 2 000 dotazů/den a 600/min na property.

A Performance report je tvůj výchozí stav organické návštěvnosti, kliky a imprese podle dotazu a stránky. Má jeden zrádný strop: Google drží data jen 16 měsíců. Kdo nevyexportuje před zásahem (redesign, migrace), o srovnání „odkud jsme vyšli" nenávratně přijde. Tahle výchozí organická návštěvnost je vstup do discovery a do měřicího plánu analytiky. Stejný report mimochodem hlásí i Core Web Vitals: výkon a nalezitelnost čtou terénní data ze stejného zdroje.

Když se to nasčítá: jak vypadá kolaps

Že tyhle chyby nejsou teorie, ukazuje jeden krypto-news web s víc doménami. V letech 2022–2023 mu organická návštěvnost spadla meziročně o 90 %, z 15–25 tisíc kliků denně na 2–4 tisíce, a tak to drželo rok. Příčina nebyla jedna, nasčítaly se. Nedokončená doménová migrace rozdělila crawl budget mezi starou a novou doménu. Tisíce soft 404 (stránka vrací status 200, ale je prázdná) braly rozpočet. Automaticky generované „converter" URL ho braly taky. A skončilo to 513 000 stránkami ve stavu „crawled – not indexed" jen v jedné zemi.

Oprava od konce ledna 2023 byla učebnicová. Správné stavové kódy 404/410 místo prázdných 200. Odstranění converter URL přes robots.txt plus noindex. Posílení canonical signálů. Do dubna klesly soft 404 o 83 % (ze ~120 tisíc pod 20 tisíc), indexované stránky v Německu vyrostly ze 150 tisíc na 370 748 a kliky se vrátily k 12–15 tisícům denně.

Druhý typický scénář je ještě banálnější a o to bolestivější: staging carry-over. Z testovacího prostředí se do produkce protáhne Disallow: / v robots.txt nebo zděděný noindex v šabloně, a web se deindexuje. Proto se politika přesměrování a kontrola robots/noindex ověřuje při redesignu i spuštění a migraci přes URL Inspection, ne až podle propadu návštěvnosti.

Aparát se škáluje, otázka ne

„Robots, canonical, sitemapa, hreflang, structured data, to je aparát pro velký web, my máme pět stránek." I pětistránkový web má robots.txt, kanonické URL a sitemapu. Rozdíl je v objemu, ne v nutnosti. Crawl budget malý web netrápí, ale Disallow: / ze stagingu ho smete úplně stejně. Co se neškáluje, je otázka: „vidí Google můj obsah tak, jak si myslím?" A na tu odpovídá Search Console pro pět stránek stejně jako pro pět set tisíc.

Praktický checklist

Typické chyby

Zdroje

Tahle kapitola naplňuje sliby, na které odkazuje zbytek wiki. Pojmy definuje slovník, strukturu rozhoduje informační architektura a SEO ji udrží průchodnou pro stroje. Druhá vlna indexace závisí na volbě renderování, title/canonical jsou pole obsahového modelu, alt text patří médiím a podkladům. Sémantické nadpisy a alt text jsou sdílený signál s přístupností — co čte čtečka, čte i Googlebot. Terénní data sdílí s Core Web Vitals, kontroluje se při redesignu a spuštění, Performance report je výchozí stav pro discovery i marketing a distribuci a měří se v rámci analytiky.