Robots.txt neslouží k zákazu indexace stránek

Jeden z nejčastějších omylů, kterého se dopouští i zkušení SEO harcovníci, je využití standardu robots.txt pro zákaz indexace stránek:

Zapamatujte si jednoduché pravidlo. Robots.txt neslouží k zákazu indexace stránek. Nikdy a ani trochu. A naopak může uškodit.

Indexace versus crawlování

Pro pochopení je nutné znát rozdíl mezi crawlováním a indexací. Crawlování znamená, že se robot vyhledávače prochází po vašem webu a stahuje si k sobě od vás jednotlivé stránky pro další zpracování.

Indexace je pak sestavování indexu – tedy databáze, ve které fulltext po zadání dotazu hledá. Do indexu přitom zařazuje stránky a informace o nich získané nejen z crawlování, ale i z dalších zdrojů, které vyhledávači přijdou zajímavé a užitečné.

Typicky už jenom tím, že se na nějakou konkrétní stránku odkazuje odjinud, dostává vyhledávač o dané stránce řadu zásadních informací – link text odkazu, klíčová slova v její URL, tematický kontext, ze kterého se na ni odkazuje, podobu a sílu jejího odkazového profilu. Další údaje může získat z popisků či kategorií v katalozích, do kterých je stránka zařazena. A tak dále.

Co je na zákazu indexace přes robots.txt špatně?

Robots.txt nezakazuje zařazení dané stránky do indexu, ale jen a pouze její crawlování robotem vyhledávače. Říkáte tím tedy, že si na danou URL nesmí crawler přímo sáhnout a stáhnout si k sobě její obsah.

Vyhledávače si ale i nadále můžou zařadit stránku do indexu jen na základě dalších údajů z jiných zdrojů a nabízet ji ve výsledcích hledání. A skutečně to velice často dělají:

Snímek obrazovky 2015-01-26 v 17.07.07

Je vidět, že informace, které Google o stránce na SERPu zobrazuje, nepochází ze samotné stránky, ale právě z nějakého link textu a dalších zdrojů v okolí dané stránky. Všimněte si, že vyhledávač uživatele upozorní, že o stránce má jenom dílčí neúplně informace. Ale i přesto ji indexuje, nabízí a zobrazuje.

Jak tedy správně zakázat indexaci?

Správný zákaz indexace závisí na kontextu a důvodech, proč to vlastně vůbec chcete dělat:

Link rel=canonical

V případě, kdy máte na webu duplicity nebo silné podobnosti, které nelze vyřešit sloučením všech stránek v jedinou a přesměrováním ostatních přes HTTP 301, je místo zákazu všech duplicitních variant lepší použít meta značku canonical:

Nejedná se o zákaz indexace v pravém slova smyslu, ale spíš o nezávaznou nápovědu vyhledávači, kam by měl všechny duplicitní a podobné stránky kanonizovat. Výhodou je, že pokud na to vyhledávač přistoupí, koncentruje do navržené kanonické stránky odkazy a rank ze všech takto označených stránek. Nevýhodou je, že to vyhledávač nemusí vůbec respektovat.

Meta robots noindex

Tohle je ta správná, čistá a bezpečná metoda, jak skutečně zakázat indexaci dané stránky. Do její HTML hlavičky přidáte meta značku:

Využijete to v případě stránek, na které vůbec nechcete, aby vám uživatelé chodili z vyhledávačů napřímo. Typicky třeba kroky nákupního procesu nebo děkovací stránky po odeslání konverze. Čistě pro jistotu i všechny stránky s nějakými neveřejnými citlivými údaji, i přesto, že ty máte určitě všechny dávno schované za přihlášením.

Po meta robots noindex sáhnete i v případě, kdy se reálně potýkáte s duplicitami či podobnostmi, ale vyhledávač odmítá zohlednit navržený meta canonical. Nevýhodou je, že se vám pak rank tematicky nekoncentruje v ideální kanonické stránce, ale rozplizne se vám bezkontextově přes všechny odchozí odkazy do zbytku webu.

HTTP hlavička X-Robots-Tag

Alternativa k meta robots noindex. Jenom místo HTML zdrojáku se posílá přímo v HTTP hlavičkách v HTTP odpovědi od serveru:

Čili v zásadě totéž jako meta robots noindex. Jenom je to složitější na implementaci – HTML tag vrazí do zdrojáku každý, HTTP hlavičky už jsou vyšší dívčí. A navíc písmeno X na začátku naznačuje, že je to nestandardní HTTP hlavička, takže nemusí být podporovaná zdaleka všemi vyhledávači. Takže meta robots noindex bude asi většinou lepší variantou.

Více viz článek Robots meta tag and X-Robots-Tag HTTP header specifications.

HTTP autentizace

Zejména pro testovací verze vyvíjeného webu se místo zákazu indexace hodí skrýt paušálně celý web za HTTP autentizaci. To se zapíná obvykle přímo v konfiguraci daného webového serveru. Testovací verze webu se schová za heslo, takže na ni nevidí nikdo nepovolaný. Vedlejším efektem pak je, že je chráněna i před nechtěným zcrawlováním a indexací vyhledávačem.

Čistě formálně vzato, stejně jako u robots.txt platí, že ani HTTP autentizace přímo nezakazuje indexaci, jenom se crawler nedostane k samotným stránkám. U testovací verze webu se ale neočekává, že by měla nějaký smysluplný odkazový profil a vnější kontext, ze kterého by mohl vyhledávač čerpat další informace. A i kdyby ji nějakým omylem zaindexoval, tak příchozí návštěvníci z vyhledávače narazí nanejvýš tak na přihlašovací formulář. Takže pro náš účel poslouží HTTP autentizace zpravidla uspokojivě.

Výhodou je i to, že po překlopení webu na ostrou doménu se často meta robots nebo robots.txt zákazy zapomínají odstranit, takže vedou obratem k vypadnutí celého webu z indexu vyhledávačů. U HTTP autentizace je riziko nechtěného zapomenutí minimální.

Pozor na chybné kombinace

Teď už víte, že pro zákaz indexace slouží primárně meta robots noindex. Možná vás napadne, že pro jistotu to stejně navíc podpoříte současným zákazem v robots.txt. Čistě pro sichr, co kdyby, za to nic nedáte.

To je ale přeci úplně špatně! Jen si to srovnejte v hlavě. Tím, že robotovi zakážete přistupovat na vaše stránky, nemůže si stáhnout HTML zdroják, takže se ani vůbec nedozví o tom, že tam nějaký meta robots noindex je. V důsledku paradoxně může tyto stránky vesele indexovat a nabízet ve výsledcích hledání.

Robots.txt prostě opravdu nesmí být u zákazu stránek ani trochu.

Obdobně doprovodí řada lidí meta robots noindex ještě dalším parametrem nofollow. Přeci čím víc zákazů, tím jistější:

Ve skutečnosti tím ale zakážete následování interních odkazů ze stránky dál a dost možná i přelévání ranku do zbytku webu. Vytvoříte tak černou díru na rank, což se vám může promítnout do nižších pozic obecně celého webu. Ale vy chcete zachovat a předat co nejvíce ranku, chcete, aby robot snáze objevil indexovatelný zbytek vašeho webu. Správný zápis je tedy:

S tím, že follow je výchozí hodnota, takže ji můžete úplně vynechat. Nofollow smysluplně použijete opravdu tak jednou za sto let.

A k čemu tedy v praxi využiju robots.txt?

Zůstává otázka, k čemu tedy vlastně robots.txt je, když ne k zákazu indexace.

Je přesně k tomu, k čemu byl navržený. Tedy pro zákaz přímého přístupu robota na web nebo nějakou jeho dílčí stránku. To se občas hodí, sic zdaleka ne tak často, jak jste si mysleli.

Například pokud máte URL, jehož pingnutím se hlasuje v nějaké anketě, a nechcete, aby vám roboti při procházení vaším webem přičítali hlasy. Totéž platí pro jakékoliv trackovací a přesměrovací skripty, například pro počítání návštěvnosti nebo prokliků z reklamního systému:

Roboty budete chtít někdy zakázat také z výkonnostních důvodů. Ať už na dílčích skriptech a stránkách, jejichž každé zobrazení představuje složitý výpočet náročný na serverové zdroje či vám prostě přijde zbytečné, aby si je vyhledávač stahoval:

Anebo třeba přes robots.txt můžete paušálně odříznout nějakého konkrétního robota, pokud je neukázněný a sestřeluje vám web:

Pořád jenom roboti. A co lidi?

Aby to bylo spravedlivé, máme tu pro zájemce jako bonus na závěr i standard humans.txt.

Podívejte se například, jak si žijí humans.txt na našem Medio webu!

Související odkazy

Zveřejněno 27.1.2015 v rubrice Internetový marketing se štítky , , , , , , , .
tichy

Jan Tichý

Honza provozuje analytickou, konzultační a vývojářskou firmu Medio Interactive. Vystudoval informační a znalostní inženýrství na VŠE v Praze, kde příležitostně přednáší o webové analytice, webdesignu a internetovém marketingu.

Google+ profil @jantichy tichy@medio.cz

Komentáře k článku

[1] Pavel Ungr | 27. 1. 2015 v 11.07

Honzo, skvělý článek,díky za něj. Jen moje jedna poznámka – když se na stránky nedostane crawler, tak se nedostane ani do indexu, takže i robots.txt a zákazy v něm mohou sloužit k zákazu indexace. Ale platí to jen u nových stránek. Otázka je, co se stane s URL v indexu, kam najednou robot nebude mít přístup, nevyřadím je po čase vyhledávač také z indexu?

[2] Jan Tichý | 27. 1. 2015 v 11.09

[1] Pavle, to právě není pravda. Stránka se může dostat do indexu, i pokud se na ni crawler vůbec nikdy nedostane. That’s the point.

[3] Pavel Ungr | 27. 1. 2015 v 11.20

Jasně, v případě nějakého množství odkazů, ale moje druhá otázka je myslím validní. Co se stane s URL v indexu kam dlouhou dobu nemá crawler přístup? Máš třeba nějaký takový příklad?

[5] Bohumil Jahoda | 27. 1. 2015 v 12.05

Skutečně ta meta značka robots zajistí (bez zákazu v robots.txt), že se stránka nikdy neobjeví ve výsledcích? Typicky při zadání názvu té stránky.

Bohužel stránky, co znám, které nechtějí být vyhledávány, používají (kromě případné meta značky) zákaz v robots.txt, takže to jde těžko otestovat.

[6] Jan Tichý | 27. 1. 2015 v 12.11

[5] Ano, pokud vím, tak všechny běžné vyhledávače meta značku robots=noindex respektují.

[7] David Grudl | 27. 1. 2015 v 12.53

Nedávejte do robots.txt soubor robots.txt, může to vést k poškození robota a Google vás může žalovat o náhradu.

[8] Jan Tichý | 27. 1. 2015 v 12.54

Horší už je pak jenom přímo do Googlu zadat dotaz „Google“!

[9] David Grudl | 27. 1. 2015 v 13.30

Btw nemáte někdo zjištěno, jaký (jestli vůbec) je rozdíl mezi meta hlavičkou canonical a HTTP hlavičkou Content-Location?

[10] Bohumil Jahoda | 27. 1. 2015 v 13.32

[6] Byl by příklad nějaké stránky, na kterou běžně vedou odkazy, má meta značku „robots=noindex“ a není ji možné podle názvu najít v Googlu?

[11] Zbyněk Fridrich | 27. 1. 2015 v 15.36

Honzo díky, konečně to můžu progošům omlátit o hlavu. Super článek.

Co jsem koukal tak Google a Seznam se v tomto pohledu rozcházejí, pomocí robots.txt můžeš zakázat INDEXACI stránek u seznam.cz. Odkaz na sitemap.xml se do tohoto souboru dává taky pouze kvůli Seznamu. Google tohle načítá z Webmaster tools. Opravte mě někdo, pokud se pletu.

http://napoveda.seznam.cz/cz/fulltext-hledani-v-internetu/komunikace-s-vyhledavacim-robotem/robots.txt/

[12] Pavel Ungr | 27. 1. 2015 v 16.14

Zbyňku, IMHO pokud sitemapa není v GWT tak Google ji tahá taky z robots.txt.

[13] Karel Hanousek | 27. 1. 2015 v 17.38

1) Skvělý článek, jenž odpoví mnoha lidem (něčím i mě) na celkem zásadní skutečnosti o indexaci a v podstatě i o SEO.

*****

2) HTTP autentizace
– perlička: nedávno jsem u jednoho svého zatím málo navštěvovaného webu potřeboval zakázat lidem přístup, abych mohl na ostrém (!) během asi jednoho půldne něco odladit. Druhý den jsem měl v GWT chybová oznámení asi na polovičku – Gbot je citlivka :) .

*****

3) otázka: pokud cíleně chci zrušit (respektive vyjmout ze SERPu) stránku „/stranka-fn-gz-strc-prst-skrz-krk-1323“ :) , doporučuješ tedy tuto stránku:
– meta noindex
– cannonical na „/upravena-fn-gz“
+ .htaccess – 301 na „/upravena-fn-gz“

Já jsem vždy starou na novou přesměrovával 301 + add novou do Seznam + add v GWT k procházení i s okolními linky.

*****

4) Je celkem náhoda, že zrovna předevčírem jsem se o humans.txt dozvěděl. Množí se na weby různí nepěkní boti (server data) a hledal jsem infa jejich redirectů. Google má také http://www.google.com/humans.txt :) .

*****

5) Díky za příklad humans.txt pro Médio.
Jobs.cz má http://www.jobs.cz/humans.txt

Přidám linky:
http://humanstxt-creator.org/
– a jak je na tom ČR? – http://humanstxt.org/humans/tag/czech-republic/

*****

6) [5] Bohumil Jahoda | 27. 1. 2015 v 12.05
– doporučuji občasně projet například Screaming Frogem a hledat primárně „meta noindex“. Na druhou stranu se ale moc s vyplňovaním této meta značky příliš nesetkávám. Lidi a „specialisté“ dávají přednost „robots.txt“ a teď máme článek, který je k odkazování ;) .

*****

7) [8] Jan Tichý | 27. 1. 2015 v 12.54
Celkem masakrální robots.txt má Google. Mraky dat se prostě musí nějak krotit
http://www.google.com/robots.txt

Produktivní den.
KH

[14] Jan Tichý | 27. 1. 2015 v 22.36

[9] David Grudl: Čistě teoreticky by mohla být hlavička Content-Location pro tohle skutečně využitelná a používaná. Vyhledávače ji ale ve skutečnosti nezohledňují a místo ní si zavedly link rel=canonical. Důvody pro toto rozhodnutí shrnul kdysi v nějaké diskuzi Maile Ohye z Googlu. Ve zkratce: Jednak se tomu nedá věřit, protože webmasteři a servery tuhle hlavičku nepoužívají, případně různě prasí a vracejí v ní nesmysly. A jednak vrazit do zdrojáku nějaký HTML tag je pro většinu webmasterů řádově snazší, než někde kouzlit nějaké HTTP hlavičky, o kterých polovina z nich ani neví, co to vlastně je. Podrobněji viz viz http://stackoverflow.com/a/547232

[15] Jan Tichý | 27. 1. 2015 v 22.43

[11] Zbyněk Fridrich: Nedívej se na to, co Seznam píše ve své nápovědě. Ve skutečnosti i on indexuje stránky, které mají zakázané robots.txt, pokud mu to přijde užitečné a rozumné. Viz například http://search.seznam.cz/?q=site%3Aklaboseni.cz

Co se týká nalezení sitemap.xml, tak pokud to dobře sleduji, Seznamu je potřeba to podsunout v robots.txt nebo submitnout přes submit formulář. U Googlu kromě těchto dvou možností je navíc ještě třetí cesta, tedy registrace do Webmaster tools. Seznam je ale přísnější na formální stránku věci, například nezpracuje sitemap.xml, pokud není vracena se správným content-type. Google to tak nehrotí.

[16] Jan Tichý | 27. 1. 2015 v 22.51

[13] Karel Hanousek: Pro cílené vyjmutí stránky není link canonical vhodný, protože ho vyhledávač nemusí zohlednit. Takže je lepší cokoliv, co jasně řekne fultextu, že už tam tu stránku nechci – tedy meta noindex, případně 301, pokud stránku přesouváš jinam. U obou se pak musí čekat, až se dostaví seznambot/googlebot, což se dá zase urychlit submitnutím do submit formuláře. Pokud potřebuješ odstranit stránku z indexu asap a spolehlivě, třeba proto, že se ti tam zaindexovaly nějaké citlivé údaje, pak je nejlepší sáhnout u Googlu ve Webmaster Tools po „Google Index – Remove URLs“. U Seznamu nic rychlejšího neznám, možná napsat na online support :)