(13 min. čtení)
Co je to robots.txt?
Soubor robots.txt se používá k poskytování informací robotem vyhledávače a crawl programem (programem na prohledávání) o tom, co by měli dělat a co by na stránce neměli dělat. Příkazy se posílají pomocí protokolu Robots Exclusion Protocol, třeba však poznamenat, že některé vyhledávací nástroje prohlašují, že příkazy obsahují nestandardní položky. Mezi základní položky patří zprávy o tom, které části stránky by roboti neměli číst, ačkoli existuje více možností použití souboru robots.txt.
Trochu historie
Protokol Robots Exclusion Protocol byl vytvořen doslova před čtvrtstoletím, v únoru 1994 - a od té doby se velmi nezměnil, s výjimkou výše uvedených nestandardních záznamů. Protože ve dnech jeho "mládí" existovalo na trhu mnoho vyhledávacích nástrojů (stačí vzpomenout AltaVista, HotBot, Lycos nebo Infoseek - a seznam byl nakonec mnohem delší), rychle se stal neoficiálním standardem. Zde bychom však měli zmínit, že tento standard je atypický, protože záznam stále byl a je jen návrhem, který roboti často nerespektují nebo respektují pouze částečně.
Je zajímavé, že v červenci 2019 společnost Google - jejíž boti se také ne vždy zcela řídí příkazy uloženými v souborech robots.txt - navrhla, aby byl protokol Robots Exclusion Protocol považován za oficiální standard. Může to v současnosti změnit způsob používání souboru robots.txt? Teoreticky ne. Může to však vést k diskusím o zavedení nových položek, které by mohly pomoci při efektivnější "kontrole" robotů vyhledávacích nástrojů.
Které roboty čtou soubor robots.txt?
Soubor robots.txt je určen pro všechny automatizované systémy vstupující na web. To se netýká pouze nejsamozřejmějších robotů vyhledávacích nástrojů z hlediska SEO. Roboty, kterým jsou adresovány příkazy tohoto souboru, jsou také automatické archivující systémy (například Web Archive), programy, které stahují stránku na lokální disk (např. HTTrack Website Copier), nástroje pro analýzu webových stránek (včetně SEO nástrojů jako Xenu, ale také roboti Majestic SEO a Ahrefs) atd.
Samozřejmě, že v mnoha případech by se tvůrci neměli starat o příkazy. Na druhé straně někteří roboti umožňují svým uživatelům vybrat si, zda budou dodržovat zjištěny příkazy.
Proč používat soubor robots.txt?
To je základní otázka, kterou stojí za to se zeptat - zejména v souvislosti s několikrát uvedenými informacemi, že s respektováním zápisů v souboru robots.txt to bývá různé. Odpověď je jednoduchá: malá kontrola nad roboty je stále lepší než žádná. A co z toho můžete získat? Zaprvé neumožníte automatizovaným systémům přehlížet ty části webové stránky, které by neměly navštívit (z různých důvodů), a ukážete jim místa, která chcete a které jsou nejlepší.
Blokování konkrétních částí stránky může být důležité z různých důvodů:
- Otázka bezpečnosti - možná nechcete, aby se roboti (nebo náhodní uživatelé, kteří později využijí zdroje indexované roboty) dostaly do sekcí, ke kterým by neměly mít příliš snadný přístup.
- Ochrana proti dvojímu obsahu - je na stránce velké množství interně duplikovaného obsahu a zároveň URL schéma umožňuje jeho jednoznačnou identifikaci, pomocí souboru robots.txt můžete dát vyhledávačům signál, že tato část stránky by neměla být prohledávána.
- Úspora přenosu - pomocí záznamů robots.txt se můžete pokusit odstranit z cestiček, po kterých se roboti pohybují, celé pod-adresáře nebo specifické typy souborů - dokonce i složku obsahující grafiky nebo jejich verze ve vysokém formátu. Pro některé webové stránky mohou být úspory při přenosu značné.
- Ochrana obsahu před "únikem" ven - třeba poznamenat, že výše uvedenou ochranu složky s velkoformátovou grafikou lze použít i na to, abychom ve vyhledávacím nástroji na obrázky prezentovali pouze menší verze. To může být důležité v případě foto bank (ale nejen pro ně).
- Optimalizace crawl budgetu (Nebo rozpočtu na procházení) - ačkoli je to zmiňované na konci seznamu, rozhodně to není triviální. Čím je web větší, tím větší důraz by měl být kladen na optimalizaci cestiček, kterými se pohybují roboti indexování vyhledávače. Blokováním stránek, které nejsou relevantní pro SEO v souboru robots.txt, jednoduše zvyšujete pravděpodobnost, že se roboti přesunou tam, kam mají.
Základní příkazy v robots.txt: user-agent, allow a disallow
Pojďme ke kořenu věci: jak by měl vypadat soubor robots.txt. Podle definice by to měl být textový soubor umístěn v kořenovém adresáři webové stránky, které se týká. Jeho hlavními, nejběžnějšími příkazy jsou user-agent, allow a disallow. Pomocí prvního můžeme určit, pro které roboty je dané pravidlo určeno. Další dvě naznačují, ke kterým oblastem by měl mít robot přístup a kde není vítán.
Je třeba si uvědomit, že soubor robots.txt podporuje proměnnou ve formě hvězdičky (*) a cesty k souborům, na které se příkaz vztahuje, by měly být vždy něčím vyplněny, byť jen lomítkem (/
Příkladem správného vyplnění je například:
User-agent: *
Allow: /
- to znamená, že všichni roboti mohou indexovat celou stránku. podobně:
User-agent: *
Disallow: /
-znamená odmítnutí přístupu do /
Na druhé straně:
User-agent: *
Disallow:
- neznamená nic z důvodu chybějící deklarované cesty po příkazu o zákazu.
V jednom souboru robots.txt může být samozřejmě více allow a disallow políček. Příklad? Prosím:
User-agent: *
Allow: /
Disallow: /
Disallow: /
- to znamená, že roboti mohou navštívit celý web, s výjimkou složek /
Je třeba dodat, že samotné příkazy se mohou vztahovat nejen na celé adresáře, ale i na jednotlivé soubory.
Pořadí příkazů allow a disallow v souboru robots.txt
V případě, že se vyskytne problém s interpretací příkazů allow a disallow, například pokud chcete zakázat robotům přístup do adresáře, ale udělat výjimku pro konkrétní podadresář, nezapomeňte, že povolovací příkazy by měly být nad zakazovacími - například:
User-agent: *
Allow: /
Allow: /
Disallow: /
User-agent: Ahrefsbot
Disallow: /
User-agent: MJ12bot
Disallow: /
Ve výše uvedeném příkladu jsem právě ukázal případ, kdy se pro některé roboty použila zvláštní pravidla - tímto způsobem "požádáte" roboty Ahrefs a Majestic SEO, aby se nepohybovaly po stránce.
Příkaz Sitemap
Kromě "pozvánek" a doporučení na přeskočení adresářů lze soubor robots.txt použít také k zobrazení umístění mapy stránek robotem. Používá se na to příkaz sitemap, po kterém následuje úplná cesta k mapě. Příklad výše uvedeného vypadá takto:
Sitemap: http://
Samozřejmě můžete uvést více map, což může být užitečné pro velmi složité webové stránky.
Příkaz Crawl-delay
Pro velmi velké webové stránky často vzniká dilema - na jedné straně mohou jejich majitelé chtít indexovat celé stránky, na druhé straně, nadměrná aktivita robotů vyhledávacích nástrojů může spotřebovat poměrně hodně přenosu a zatěžuje server neustále novými poptávkami. Nápadem na vyřešení tohoto problému bylo zavedení používání na míru šitého příkazu Crawl delay (zpoždění procházení).
Používá se k informování robotů, že by neměly stahovat nové soubory častěji než každých x sekund, což znamená prodloužení práce robota v čase. Příkladem takového postupu je:
User-agent: *
Crawl-delay: 2
- to znamená stahování následných dokumentů každé dvě sekundy.
Je třeba si však uvědomit, že většina vyhledávacích nástrojů s tímto příkazem zachází zcela svobodně, a často ho jednoduše ignoruje. Google nějaký čas komunikoval irelevantnost tohoto příkazu a nakonec v červenci 2019 oficiálně oznámil, že ho nepodporuje. Bing prohlásil, že BingBot záznam čte, přičemž jeho hodnota musí být mezi 1 a 30. Yandex tuto směrnici teoreticky podporuje, přestože s jejím respektováním je to v praxi různě.
Zajímavé je, že český vyhledávač Seznam navrhuje použít jiný příkaz, a to request-rate s přiřazenou hodnotou založenou na počtu dokumentů, lomítkem a časem ve formě čísla a jednotky (s jako sekundy, m jako minuty, h jako hodiny ad jako dní, vždy bez mezer za číslem). Příkladem může být toto:
User-agent: SeznamBot
Request-rate: 500/
alebo:
User-agent: SeznamBot
Request-rate: 100/
Seznam prohlásil, že příkaz by neměl vyžadovat pomalejší indexaci jako jeden dokument každých 10 sekund.
Příkaz Clean-param
Velmi zajímavý příkaz, který je ale obecnou normou, je Clean-param. Tento příkaz čtou roboti vyhledávače Yandex a umožňuje ignorovat konkrétní parametry přiřazeny k adresám na určených cestách.
Jak to funguje v praxi? Předpokládejme, že na vaší stránce jsou adresy:
domena.com/
domena.com/
domena.com/
Co se stane, pokud proměnná "tlo" (pozadí) pouze změní vzhled stránky, která má stále stejný obsah? V takových případech Yandex navrhuje použít parametr clean-param. Vhodný záznam může vypadat následovně:
User-agent: Yandex
Clean-param: tlo /
- což znamená, že všechny tři adresy uvedené v předchozím příkladu se budou číst jako:domena.com/
Jak vidíte, tento příkaz je opravdu výhodný, protože se může omezit na konkrétní adresáře.
Příkaz Host
Mezi vlastní příkazy souboru robots.txt patří i příkaz host. Je ignorován většinou vyhledávacích nástrojů, byl však nějaký čas zmíněný na stránkách pomoci Yandex-u, ale jeho popis už zmizel.
Příkaz host se používá (nebo spíše používal se) jako indikace preferované domény, v případě, že máte několik zrcadlových stránek umístěných na různých adresách. Důležité je, že v jednom souboru robots.txt by měl být nanejvýš jeden host příkaz (pokud jich je tam umístěno více, další jsou ignorovány) a položka domény za host příkazem nemůže obsahovat chyby nebo čísla portů.
Príklad:
Host: domena.com
Bohužel nevím, zda příkaz stále funguje, ale mohu předpokládat, poznajíc vynalézavost SEO specialistů, že je jen zkoušel k různým experimentům s umístěním na ne přesně takové domény, na kterých by měl být. Jako útěchu pro "běžné webmastery" je třeba uvést, že když Yandex tento příkaz na svých stránkách vzpomínal, prezentoval ho jen jako "návrh" pro roboty - proto ho nepovažoval za povinný.
Chyby v souboru robots.txt a jejich následky
I když se obsah souboru robots.txt může použít k tomu, abychom se s roboty vyhledávacích nástrojů "dohodli", může to také způsobit selhání vašich stránek. Jak? Vyloučením takového obsahu z vyhledávání, který by se měl objevit v indexu. Výsledkem může být výrazná ztráta viditelnosti ve výsledcích vyhledávání. Zejména v případě rozšířených souborů robots.txt s mnoha položkami v různých podadresářích je snadné udělat někde chybu a vyloučit příliš mnoho částí stránky.
Druhou hlavní chybou je pokrytí všech obrázků, CSS stylů a Java Script souborů příkazem disallow. Může se to zdát jako dobrý tah, ale realita je poněkud odlišná ze dvou důvodů. V první řadě je dobré, pokud se vaše stránka nachází ve výsledcích vyhledávání obrázků (ačkoli samozřejmě můžete zakázat přístup například k velkoformátovým verzím, co jsem již zmínil).
Druhý důvod je však důležitější a je to renderování nebo vykreslení webu Google botem. Pokud robotovi nepovolíte přístup k souborům, které jsou důležité pro konečný vzhled stránky, vyrenderuje ji bez nich, což může v některých případech způsobit její neúplnost - a to může ovlivnit hodnocení.
Měli byste při vytváření souboru robots.txt věnovat pozornost jeho velikosti?
John Mueller, svého času zaměstnanec společnosti Google, ve svém profilu Google+ jednou uvedl, že maximální velikost souboru robots.txt je 500 KB. Proto lze dospět k závěru, že problém je abstraktní, protože takové rozšíření seznamu příkazů by bylo absurdní. Je však třeba usilovat o zajištění toho, aby ani krátký soubor robots.txt nadměrně nerostl a jednoduše si zachoval čitelnost pro ... někoho, kdo se na něj bude muset podívat a případně jej doplnit nebo upravit.
Kromě toho musíte pamatovat na to, že jde pouze o akceptovanou hodnotu Google botem - v případě ostatních vyhledávacích nástrojů lze velikost akceptovaného souboru robots.txt lišit.
Je blokování stránky v souboru robots.txt dostačující?
Bohužel ne. Zaprvé, roboti hlavního vyhledávače ne vždy dodržují zákazy (nemluvě o tom, jak k nim některé další nástroje přistupují). Zadruhé i po přečtení zákazu může Google vstoupit na stránku a přidat ji do indexu, přičemž zohlední pouze její název a URL adresu a někdy přidá následující prohlášení "Informace o této stránce nejsou k dispozici".
Na takovou stránku je tedy stále možné se dostat z úrovně vyhledávače, ačkoli je to nepravděpodobné. Navíc roboti stále procházejí takovými stránkami po následných odkazech, i když už neposkytují link juice a jejich hodnocení nezahrnuje údaje vyplývající z jejich obsahu.
Co jiného kromě souboru robots.txt?
Chcete-li vyloučit konkrétní části stránky z indexů vyhledávače, můžete vždy navíc použít robots meta tag umístěn v části <HEAD> jednotlivých podstránek:
<meta name="robots" content="noindex, nofollow" /
- stále nejde o metodu zabezpečující 100% úspěch (a navíc je to méně pohodlné), ale jde o další signál pro roboty.
Ale co když chcete zcela zablokovat přístup pro boty a náhodné lidi? V této situaci, namísto pasivních metod, vypočtených tak, že se nikdo nedokliká na dané místo, je mnohem lepší jednoduše chránit danou část stránky heslem (dokonce i prostřednictvím htaccess).
Teoreticky můžete sáhnout i po polovičních opatřeních, například ve formě blokování přístupu na volání z konkrétních adres a IP tříd (takových, které používají roboti vyhledávacích nástrojů), ale ve skutečnosti by stačilo vynechat některé adresy a problém by byl stále tady - a to nás zas vede k závěru, že naprostou bezpečnost zajistí nucena autorizace.
Shrnutí
Nakonec nám zbývá vrátit se k problému důsledků možných chyb při vyplňování souboru robots.txt. Cokoliv tam napíšete, je třeba pamatovat na to, jaké mohou být následky a ... co má být vlastně cíl. Pokud chcete něco indexovat, věnujte pozornost tomu, zda to povede k vedlejším účinkům (viz příklad s problémy s renderováním stránky pomocí Google Bota). Pokud vám záleží na problémech se zabezpečením, nezapomeňte, že vyloučení Googlu z indexace stále nebrání přístupu automatickým scrapovacím nástrojem.
Pokud ještě máte stále pocit, že potřebujete další znalosti ..., můžete si přečíst další články týkající se umísťování stránek v našem blogu.