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/a/kosik/jsou dvě různé věci. Crawl-delayGoogle 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/ a /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á
- Otevřete
https://vasedomena.cz/robots.txtv 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. - 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.
- U konkrétní adresy použijte Kontrolu URL. Když je zakázaná, řekne vám to natvrdo.
- V nástroji Seznam Webmaster si ověřte, že se SeznamBot na web dostane.
- 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.
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.