Syntaxe
Soubor robots.txt se skládá z libovolného počtu bloků, kde každý blok specifikuje pravidla pro jiného robota.
Příklad souboru robots.txt s několika bloky
User-agent: SeznamBot Disallow: /admin User-agent: psbot Disallow: /obrazky
Soubor výše obsahuje dva bloky, jeden pro robota SeznamBot, jeden pro robota psbot. V každém bloku je na prvním řádku direktiva User-agent: (na rozdíl od HTTP hlaviček se používá malé písmeno a). Za ní je pak uveden název robota nebo řetězec User-Agent, kterým se robot běžně identifikuje. Namísto jména konkrétního robota lze použít znak * (hvězdička), který znamená to, že pravidla v bloku jsou míněny pro všechny roboty.
Každý další řádek pak definuje pravidlo, které má uvedený robot dodržovat. Pravidlo začíná názvem příkazu, pak následuje dvojtečka, mezera a obsah pravidla.
V příkladě nahoře je použit příkaz Disallow:, kterým se zakazuje stahování části webu. Obsahem příkazu v prvním bloku je text /admin, to znamená, že webmaster zakázal SeznamBotovi stahování všech podstránek webu, jejichž cesta v rámci webu začíná řetězcem "/admin". Podobně zakázal psbotovi stahovat stránky, jejichž cesta začíná řetězcem /obrazky.
TIP
Disallow: /
Zástupné znaky
V souboru robots.txt lze využít následující zástupné znaky:
* | nahrazuje libovolný řetězec znaků (může se vyskytnout několikrát v jednom pravidle) |
$ | znamená konec adresy (interpretuje se stejně u všech pravidel) |
Příklad použití zástupných znaků v souboru robots.txt
User-agent: SeznamBot Disallow: *.pdf$ |
Zakazuje stahování všech souborů, jejichž adresa končí na „.pdf“ (a začíná jakkoliv). |
User-agent: SeznamBot Disallow: /*/diskuse/$ |
Zakazuje stahování výchozího dokumentu v adresářích /diskuse/, ale všechny ostatní soubory v adresářích /diskuse/ mohou být stahovány. |
User-agent: SeznamBot Disallow: /diskuse$ |
Postihuje /diskuse, nepostihuje /diskuse-01, /diskuse-02 atp. |
Podporované příkazy
Základní příkazy, které můžete použít, jsou:
Disallow, Allow
Hlavním účelem souboru robots.txt je zakázat robotům stahování části webu. Toto zabezpečuje direktiva Disallow:, která se může v bloku zopakovat vícekrát. Podle novějších specifikací umožňuje soubor robots.txt stáhnutí stránky také povolit, a to pomocí příkazu Allow:. To je využitelné v případě, kdy je potřeba povolit stahování jednotlivých stránek v adresáři, jehož procházení je již jiným pravidlem zakázáno.
Příklady možného obsahu souboru robots.txt
User-agent: * Disallow: |
Všichni roboti (zastupuje je znak hvězdičky) mohou stahovat všechny stránky webu - prázdné místo za příkazem Disallow/Allow znamená, že nic není zakázáno. Jedná se o výchozí nastavení (prázdný nebo neexistující soubor robots.txt znamená totéž). |
User-agent: * Allow: |
|
User-agent: * Disallow: / |
Všichni roboti mají zakázáno stahovat jakoukoliv stránku webu. |
User-agent: SeznamBot Disallow: /diskuse/ |
SeznamBot nemá stahovat obsah adresáře /diskuse/. |
User-agent: * Disallow: /archiv/ Disallow: /abc |
Všichni roboti mají zakázáno vstupovat do adresáře /archiv/. Také mají zakázáno stahovat stránky webu, jejichž jméno začíná řetězcem „abc“. |
User-agent: * Disallow: / Allow: /A/ Disallow: /A/B/ |
Všichni roboti můžou stahovat z adresáře /A/ a jeho podadresářů vyjma podadresáře /B/. Na pořadí pravidel v sekci nezáleží. |
User-agent: SeznamBot Disallow: / |
SeznamBot nesmí z webu stahovat nic. Lomítko je nutné, prázdné místo by znamenalo, že nic není zakázáno. |
Request-rate
Direktiva Request-rate slouží k nastavení počtu dokumentů, které může robot stáhnout za danou časovou jednotku.
Předvolená rychlost stahování dokumentů SeznamBotem je nastavena se snahou být šetrný k serverům, aby je stahování nadmíru nazatěžovalo nebo dokonce nevyřadilo z provozu. V případě, že vám stávající rychlost nevyhovuje (např. máte hodně stránek a chcete, aby se stahovaly a indexovaly rychleji, nebo naopak vaše servery jsou SeznamBotem nadmíru zatížené), můžete v souboru robots.txt uvést jinou rychlost.
Obě podporované verze robots.txt podporují následující zápis příkazu Request-rate:
Příklad zápisu pravidla Request-rate
Request-rate: 1/30s | 1 dokument každých 30 sekund |
Request-rate: 100/15m | 100 dokumentů každých 15 minut |
Request-rate: 400/1h | 400 dokumentů každou hodinu |
Request-rate: 9000/1d | 9000 dokumentů každý den |
POZOR
Minimální rychlost stahování SeznamBota je 1 dokument za 30 sekund. Pokud uvedete nižší hodnoty, tyto jsou automaticky převedeny na toto minimum. Maximum je omezeno aktuálním výkonem a zatížením SeznamBota.
Request-rate umožňuje také specifikovat časové rozmezí, ve kterém se robot bude chovat podle vámi nastavených pravidel. Ve zbylém čase, který není v příkazu Request-rate uveden, se robot vrátí k výchozímu chování.
Příklad zápisu časového rozmezí v příkazu Request-rate
Request-rate: <rate> <time> Request-rate: 1/30s 1800-1900 #jeden dokument se stáhne každých 30 sekund v době od 18:00 do 19:00. Ve zbylém čase stahuje obsah podle své standardní rychlosti.
Bloky pravidel pro více robotů
Pravidla uvedená v souboru robots.txt jsou platná v rámci bloku, tj. od řádku User-agent: až do následujícího řádku User-agent: nebo do konce souboru. Pravidla uvedená po řádku User-agent: * platí pro všechny roboty vyjma těch, kteří jsou pak v souboru uvedeni zvlášť.
Příklad příkazů pro všechny roboty kromě SeznamBota
User-agent: * Disallow: / # pro všechny roboty: neprohledávat nic User-agent: Seznambot Request-rate: 300/1m # pro Seznambota: prohledávat všechno, rychlost 300 URL za minutu
Příklad souboru robots.txt s pravidly pro všechny roboty a speciálními pravidly pro SeznamBota a Googlebota.
User-agent: * Disallow: /images/ Request-rate: 30/1m # pro všechny roboty: neprohledávat /images/, rychlost 30 URL za minutu User-agent: SeznamBot Disallow: /cz/chat/ Request-rate: 300/1m # pro SeznamBota: neprohledávat /cz/chat/, rychlost 300 URL za minutu User-agent: Googlebot Disallow: /logs/ Request-rate: 10/1m # pro Googlebota: neprohledávat /logs/, rychlost 10 URL za minutu
Sitemap
Tato direktiva informuje robota o tzv. sitemapě. Obsahem je absolutní URL adresa sitemapy. Direktivu můžete uvést vícekrát s různými sitemapami.Příklad souboru robots.txt s uvedením sitemapy
User-Agent: * Disallow: /diskuse Disallow: /hledej Disallow: /emailem Disallow: /dynamicke-bannery Disallow: /sessionCheck Sitemap: https://www.novinky.cz/sitemap/sitemap_articles.xml Sitemap: https://www.novinky.cz/sitemap/sitemap_news.xml Sitemap: https://www.novinky.cz/sitemap/sitemap_sections.xml