Robots.txt: k čemu je a jak si jím nezavřít celý web

Robots.txt je prostý textový soubor v kořeni domény, kterým vyhledávacím robotům říkáte, co nemají stahovat. Řeší procházení, ne indexaci. Když v něm po překlopení z testovací verze zůstane řádek Disallow: /, web vám během několika dní vypadne z Googlu i ze Seznamu. Je to pár řádků a pohořet se na nich dá překvapivě snadno.

„Zákaz procházení“ není totéž co „zákaz indexace“

Tohle plete i lidi, kteří dělají weby deset let. Robots.txt říká robotovi: tuhle adresu nestahuj. Neříká: tuhle adresu nezobrazuj ve výsledcích. Když na zakázanou adresu vedou odkazy odjinud, Google ji klidně zařadí do indexu, aniž by ji kdy viděl. V Search Console ji pak najdete pod stavem „Zaindexováno, ale blokováno souborem robots.txt“ a ve výsledcích se objeví holá URL bez popisku.

Z toho plyne past, do které spadne skoro každý. Chcete stránku dostat pryč z výsledků, tak jí dáte noindex a zároveň ji zakážete v robots.txt. Jenže ten noindex si robot nikdy nepřečte, protože stránku nesmí stáhnout. Výsledek: visí v indexu klidně půl roku. Když chcete něco odindexovat, procházení naopak povolte a počkejte, až si to Google přečte. Rozdíl mezi oběma značkami rozebírám podrobněji v článku o rozdílu mezi noindex a nofollow.

Jakým řádkům roboti opravdu rozumí?

Soubor musí ležet přesně na https://vasedomena.cz/robots.txt. Ne v podsložce, ne pod jiným názvem. Každý hostitel má svůj vlastní: blog.vasedomena.cz potřebuje samostatný soubor a pravidla z hlavní domény pro něj neplatí.

Řádek Co dělá Příklad
User-agent Otevírá skupinu pravidel pro konkrétního robota User-agent: Googlebot
Disallow Zakazuje procházení cest začínajících daným řetězcem Disallow: /kosik/
Allow Výjimka ze zákazu, typicky uvnitř zakázané složky Allow: /kosik/napoveda.html
Sitemap Absolutní adresa mapy webu, platí nezávisle na skupinách Sitemap: https://vasedomena.cz/sitemap.xml

Zástupné znaky jsou dva. Hvězdička * zastupuje libovolný počet libovolných znaků, dolar $ označuje konec adresy. Právě na hvězdičce se dá udělat chyba, které si nikdo nevšimne: Disallow: /*razeni= zavře každou adresu, kde se ten parametr objeví, ať už stojí první, nebo pátý v pořadí. Kdybyste napsali Disallow: /*?razeni=, zavřete jen adresy, kde parametr následuje hned za otazníkem, a /boty/?filtr=cerna&razeni=cena vám proklouzne. Naproti tomu Disallow: /*.pdf$ zavře jen soubory končící na .pdf a adresu /manual.pdf?stazeni=1 nechá projít. Prázdný Disallow: bez hodnoty nezakazuje nic, je to povolení.

Na běžném WordPressu s e-shopem vypadá rozumný obsah takhle:

<code>User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /kosik/
Disallow: /pokladna/
Disallow: /*razeni=
Disallow: /*?s=

Sitemap: https://vasedomena.cz/sitemap_index.xml</code>

Limity, na které narazíte:

  • Google čte prvních 500 KiB souboru, zbytek ignoruje. U prezentace o dvaceti stránkách se to nestane nikdy, u e-shopu se seznamem stovek zakázaných filtrů docela snadno.
  • Soubor si Google drží v paměti zhruba 24 hodin. Oprava se tedy neprojeví hned.
  • Když soubor vrátí chybu 4xx, robot se chová, jako by neexistoval, a prochází vše. Když vrátí 5xx, Google na 12 hodin procházení zastaví a pak jede podle poslední uložené verze až 30 dní.
  • Cesty jsou citlivé na velikost písmen. /Kosik//kosik/ jsou dvě různé věci.
  • Crawl-delay Google ignoruje úplně. Seznam ho podle své dokumentace bere v potaz, ale zvenčí se to pořádně ověřit nedá, takže bych na tom zátěž serveru nestavěl.

Které pravidlo vyhraje, když si dvě odporují?

To delší. Roboti porovnávají délku cesty v pravidle a vyhrává nejdelší shoda, bez ohledu na pořadí řádků v souboru. Při naprosto stejné délce vyhraje méně omezující pravidlo, tedy Allow.

Klasická dvojice z WordPressu:

  • Disallow: /wp-content/
  • Allow: /wp-content/uploads/

Pro adresu /wp-content/uploads/2026/08/foto.jpg platí obě pravidla, jenže /wp-content/uploads/ má 20 znaků a /wp-content/ jen 12. Obrázek se tedy stáhne. Kdybyste ty dva řádky prohodili, nezmění se nic. Pořadí robot neřeší.

Druhá věc, o kterou se lidi řežou: robot si vybere jedinou skupinu, tu s nejpřesnější shodou svého jména, a všechny ostatní ignoruje. Když máte někde v souboru User-agent: SeznamBot se dvěma řádky, SeznamBot se na skupinu User-agent: * už vůbec nepodívá. Viděl jsem e-shop, kde takhle vlastní skupina pro Seznam „odemkla“ celé administrační rozhraní i košík, protože zákazy zůstaly jen ve hvězdičkové skupině.

Proč tolik webů shodí jediný řádek?

Protože testovací verze se dělá na subdoméně typu test.vasedomena.cz a tam do robots.txt patří Disallow: /, aby se rozpracovaný web nedostal do vyhledávače. Při nasazení se překlopí databáze i soubory. Robots.txt je obyčejný soubor. Putuje s nimi.

Průběh je pak vždycky stejný. První dva dny se nestane nic, protože Google jede podle uložené verze. Třetí den začne v Search Console přibývat stav „Blokováno souborem robots.txt“, zhruba do týdne spadnou zobrazení a po nich prokliky. Klient volá desátý den, kdy si všimne, že nechodí poptávky.

Náprava je otázka minuty: řádek smazat, v Search Console otevřít Nastavení a v přehledu robots.txt požádat o nové načtení. Návrat pozic ale rychlý není. Podle toho, co jsem viděl, se běžná prezentace srovná za jeden až tři týdny, u velkých e-shopů to trvá déle, protože se musí znovu projít desítky tisíc adres. Přesný termín vám nikdo neslíbí a ani já ho neodhadnu.

Ve WordPressu má stejný efekt zaškrtnutá volba „Požádat vyhledávače, aby tento web neindexovaly“ v Nastavení → Zobrazování. Od verze 5.3 už WordPress kvůli ní do robots.txt Disallow: / nepíše, místo toho posílá noindex v hlavičce. Pro vás je to stejně nepříjemné, jen se to hůř hledá, protože robots.txt vypadá naprosto v pořádku.

Smí se blokovat CSS a JavaScript?

Nesmí. Google stránku vykresluje jako prohlížeč a bez stylů a skriptů vidí něco jiného než návštěvník. Nejčastěji na to narazíte u starých návodů z doby kolem roku 2012, kde se doporučovalo zavřít /wp-includes//wp-content/themes/. Dnes tím dosáhnete jen toho, že Googlebot uvidí neostylovanou hromadu textu, vyhodnotí ji jako nepoužitelnou na mobilu, a u webů postavených na JavaScriptu neuvidí obsah vůbec.

Ověření zabere minutu. V Search Console dejte Kontrola URL, pak Testovat aktivní adresu a podívejte se na snímek obrazovky. Je stránka rozsypaná nebo prázdná? Pak blokujete něco, co blokovat nemáte. Souvislosti kolem vykreslování rozebírám v textu o JavaScriptu a SEO.

Kterým robotům dát vlastní skupinu?

SeznamBotu v drtivé většině případů stačí hvězdičková skupina. Vlastní mu založte ve dvou situacích: když nadměrně zatěžuje server procházením filtrů v e-shopu, nebo když mu chcete povolit či zakázat něco jiného než Googlu. Pokud k tomu sáhnete, zopakujte v té skupině všechny zákazy z hvězdičkové. Přístup SeznamBota si ověříte v nástroji Seznam Webmaster, víc o něm píšu v článku o SEO pro Seznam.cz.

Druhá skupina jsou roboti jazykových modelů. Tady rozlišujte, jestli robot sbírá data na trénink, nebo staví vyhledávací index, ze kterého se pak citují zdroje v odpovědích. Ten rozdíl je zásadní a většina návodů ho smete pod stůl.

Robot K čemu slouží Zablokovat?
GPTBot Sběr dat pro trénink modelů OpenAI Podle vašeho postoje k tréninku
OAI-SearchBot Index pro vyhledávání v ChatGPT Spíš ne, přijdete o citace
ClaudeBot Sběr dat pro trénink modelů Anthropicu Podle vašeho postoje k tréninku
Claude-SearchBot Index pro vyhledávání v Claudovi Spíš ne
PerplexityBot Index pro odpovědi Perplexity Spíš ne
Google-Extended Trénink a podklady pro Gemini Lze zavřít, na Vyhledávání to nemá vliv

Google výslovně uvádí, že Google-Extended nemá vliv na zařazení do Vyhledávání ani na hodnocení. Můžete ho zakázat a pozice tím neohrozíte. Naopak zavřít OAI-SearchBot nebo PerplexityBot znamená, že vás tyhle nástroje přestanou citovat, což většině českých firem uškodí víc, než pomůže. Promyslete si to spolu s tím, jak připravit obsah pro AI vyhledávání.

Dvě nejistoty přiznám rovnou. Robots.txt je dobrovolná dohoda: slušní roboti ji dodržují, na scrapery neplatí a vynutit se dá až na úrovni serveru nebo firewallu. A roboti spouštění na přímý pokyn uživatele (ChatGPT-User, Perplexity-User) se podle dokumentace svých provozovatelů chovají různě, Perplexity u svého uvádí, že robots.txt obvykle ignoruje.

Kde robots.txt nastavíte ve WordPressu, na Shoptetu a Upgates

WordPress žádný fyzický soubor nemá. Generuje ho za běhu funkce do_robots() a výchozí obsah je třířádkový: User-agent: *, Disallow: /wp-admin/, Allow: /wp-admin/admin-ajax.php. Upravit se dá filtrem robots_txt, který dostane hotový text a informaci o tom, jestli je web veřejný. Kód patří do souboru ve složce wp-content/mu-plugins/, ne do šablony, protože při její výměně byste o něj přišli.

Pozor na jednu věc, která stojí lidi hodiny hledání: pokud v kořeni webu leží skutečný soubor robots.txt, virtuální se neuplatní. Webserver ho vrátí dřív, než se WordPress vůbec spustí. Vy tedy měníte filtr, obnovujete stránku a nic se neděje. Přihlaste se přes FTP nebo správce souborů na Wedosu či Forpsi a podívejte se, jestli tam ten soubor nesedí. Většina SEO pluginů umí robots.txt editovat přímo v administraci, jenže ho přitom často založí jako fyzický, takže platí totéž.

Na Shoptetu najdete editaci pod Vzhled a obsah → Editor → HTML kód, kde má robots.txt samostatnou záložku. Výchozí obsah si Shoptet generuje sám včetně odkazu na mapu webu. Když ho přepíšete, přebíráte odpovědnost i za ty řádky, které tam byly z dobrého důvodu. Upgates má robots.txt v administraci mezi nastavením SEO a chová se podobně. Nejčastější zásah na e-shopech je zavření adres s parametry řazení a filtrů, jenže tím řešíte zátěž serveru, ne duplicity. Na duplicity patří kanonická adresa.

Řádek Sitemap: uvádějte vždy jako plnou adresu včetně https://. Relativní zápis roboti neberou. Co do mapy webu patří a co ne, řeším v návodu na XML sitemapu v praxi.

Jak si ověříte, že soubor dělá to, co má

  1. Otevřete https://vasedomena.cz/robots.txt v anonymním okně. Musí se vrátit stav 200 a prostý text, ne přesměrování a ne chybová stránka 404 z vaší šablony.
  2. V Search Console jděte do Nastavení a otevřete přehled robots.txt. Ukáže poslední načtení, případné chyby a umožní vyžádat nové stažení. Starý tester Google vypnul v prosinci 2023, tenhle přehled ho nahradil.
  3. U konkrétní adresy použijte Kontrolu URL. Když je zakázaná, řekne vám to natvrdo.
  4. V nástroji Seznam Webmaster si ověřte, že se SeznamBot na web dostane.
  5. Projeďte web přes bezplatnou SEO kontrolu webu, která robots.txt načte a upozorní na zablokované zdroje i na chybějící odkaz na mapu webu.

Zvykněte si soubor otevřít pokaždé po nasazení nové verze webu, po migraci na jiný hosting a po výměně šablony. Zabere to patnáct vteřin a ušetří vám to týdny dohánění pozic. Další kontroly stejného ražení najdete v přehledu základů technického SEO.

Časté dotazy

Zmizí stránka z výsledků hledání, když ji zakážu v robots.txt?

Nemusí. Robots.txt zakazuje stažení stránky, ne její zařazení do indexu. Pokud na tu adresu vedou odkazy, Google ji může do výsledků dát, aniž by ji viděl, jen bez titulku a popisku. Ke skutečnému odstranění použijte značku noindex a procházení té stránky naopak povolte, jinak si robot noindex nikdy nepřečte.

Kde má robots.txt ležet a platí i pro subdomény?

Musí být přesně v kořeni hostitele, tedy na adrese vasedomena.cz/robots.txt. Každá subdoména je pro roboty samostatný hostitel a potřebuje vlastní soubor, takže blog.vasedomena.cz se pravidly hlavní domény neřídí. Odděleně se posuzuje i protokol, robots.txt z verze https neplatí pro http.

Mám zablokovat GPTBot a ClaudeBot?

Záleží na tom, jestli vám vadí použití obsahu k tréninku modelů. Pro většinu českých firem a e-shopů dává smysl trénovací roboty zavřít, ale nechat otevřené vyhledávací (OAI-SearchBot, Claude-SearchBot, PerplexityBot), protože přes ně chodí citace a s nimi návštěvníci. Je to obchodní rozhodnutí, ne technické, a jde kdykoli změnit.

Jakub Knytl

Patnáct let opravuji weby českým firmám a e-shopům. Většina problémů, o kterých tu píšu, mě potkala u klienta dřív, než jsem o nich napsal.

Související návody

Aby vás vyhledávače našly

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.

· 4 min čtení

Pojmy z tohoto textu

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.

156 kontrol, výsledek do minuty. Bez registrace, bez karty, bez e-mailu.