Tartalomkészítés.hu

Robots.txt: teljes útmutató

Technikai SEO

A robots.txt egy egyszerű szöveges fájl a domain gyökerében, amely megmondja a keresőrobotoknak, mely URL-eket kérhetnek le a webhelyről, és melyeket nem. A feltérképezést szabályozza, nem az indexelést: egy letiltott lap a linkek alapján még megjelenhet a találati listán. Arra való, hogy a robot idejét a fontos lapokra irányítsd, nem arra, hogy lapokat elrejts.

Alapfogalmak

A robots.txt a web egyik legrégebbi szabványa. Hosszú ideig csak íratlan megállapodásként működött, amelyet a nagy keresők betartottak, később pedig hivatalos szabványként is leírták (Robots Exclusion Protocol). A lényege nem változott: a webhely üzemeltetője egy nyilvános fájlban közli a robotokkal, hová ne menjenek. A jól viselkedő robotok ezt betartják, a rosszindulatúak nem, ezért a robots.txt nem biztonsági eszköz.

A fájl mindig a host gyökerében van, pontosan ezen a néven: /robots.txt. Egy almappában elhelyezett robots.txt-t a robotok nem keresnek és nem vesznek figyelembe. A fájl hatálya arra a protokollra, hostra és portra vonatkozik, ahol elérhető. Ez azt jelenti, hogy a www és a www nélküli változatnak, valamint minden aldomainnek saját robots.txt kell, ha eltérő szabályokat akarsz.

A legfontosabb fogalmak

FogalomJelentésMegjegyzés
User-agentMelyik robotra vonatkozik a szabálycsoportA * minden robotot jelent, amelyre nincs külön csoport
DisallowAz útvonal, amelyet a robot nem kérhet leÜres értékkel semmit sem tilt
AllowKivétel egy tiltáson belülA pontosabb szabály győz
SitemapAz XML oldaltérkép teljes URL-jeCsoporttól független, bárhol állhat
MegjegyzésA # utáni szöveg a sor végéigA robot figyelmen kívül hagyja

Feltérképezés és indexelés különbsége

Ez a robots.txt legfontosabb és leggyakrabban félreértett tulajdonsága. A Disallow azt mondja a robotnak, hogy ne kérje le az URL-t. Azt nem mondja, hogy a kereső ne vegye fel az indexbe. Ha egy letiltott URL-re sok link mutat, a kereső tudhat a létezéséről, és felveheti a találati listára, csak a tartalmát nem ismeri. Ilyenkor a találatnál jellemzően nincs leírás, vagy egy megjegyzés áll ott arról, hogy a lapról nem érhető el információ.

Ha egy lapot ki akarsz zárni az indexből, arra a noindex jelzés való, amelyet a meta robots címkében vagy az X-Robots-Tag fejlécben adhatsz meg. A noindexet viszont a robot csak akkor látja, ha lekérheti a lapot. Ezért a kettőt egyazon URL-re együtt használni ellentmondás.

Mi nem a robots.txt dolga

  • Bizalmas tartalom védelme. A fájl nyilvános, bárki elolvashatja, így éppen megmutatja, hol vannak az érzékeny részek. Védelemre jelszó vagy hozzáférés-kezelés való.
  • Indexelés tiltása. Erre a noindex való, lásd fent.
  • Duplikált tartalom kezelése. A változatok közti választást a canonical jelzés és az átirányítás segíti. A robots.txt tiltása miatt a kereső nem látja, hogy két lap azonos, így nem is tudja összevonni a jelzéseiket.

Hogyan működik?

Mielőtt egy robot lekérne egy URL-t egy hostról, lekéri a host robots.txt fájlját, és megnézi, mit szabad. A fájlt nem kéri le minden egyes URL előtt, hanem egy ideig gyorsítótárban tartja. Ebből következik, hogy egy módosítás nem azonnal hat: a robot csak a következő letöltéskor veszi észre.

Szabálycsoportok

A fájl csoportokból áll. Minden csoport egy vagy több User-agent sorral kezdődik, és utána jönnek a szabályok. A robot megkeresi azt a csoportot, amely a legpontosabban illik a nevére, és csak azt követi. Ha van külön csoport a Googlebot számára, akkor a Googlebot a * csoport szabályait nem veszi figyelembe, csak a sajátját. Ez gyakori hibaforrás: aki külön csoportot ír egy robotnak, annak minden szükséges szabályt oda is be kell írnia.

User-agent: *
Disallow: /kosar/
Disallow: /fiokom/

User-agent: Googlebot
Disallow: /kosar/
Disallow: /fiokom/
Disallow: /belso-kereses/

Sitemap: https://example.hu/sitemap.xml

A fenti példában a Googlebot a saját csoportját követi, ezért abban is szerepelnie kell a kosárnak és a fióknak. Ha csak a belső keresés tiltása állna ott, a Googlebot a kosarat és a fiókot lekérhetné.

Útvonalak illesztése

A szabályok az URL útvonalának elejére illeszkednek, és kis- és nagybetűérzékenyek. A Disallow: /admin tiltja az /admin, az /admin/ és az /adminisztracio útvonalat is, mert mindegyik így kezdődik. Ha csak a mappát akarod tiltani, a záró perjelet is írd ki. A nagy keresők két helyettesítő karaktert támogatnak: a * tetszőleges karaktersort jelent, a $ az URL végét.

User-agent: *
Disallow: /*?rendezes=
Disallow: /*.pdf$
Allow: /letoltesek/katalogus.pdf$

Ütköző szabályok

Ha egy URL-re az Allow és a Disallow szabály is illik, a Google a hosszabb, vagyis pontosabb szabályt követi. Ha a két szabály egyforma hosszú, a kevésbé korlátozó, azaz az Allow győz. A sorrend a fájlon belül nem számít. Más robotok ettől eltérhetnek, ezért ha a pontos viselkedés fontos, érdemes egyértelmű, át nem fedő szabályokat írni.

Ha a fájl nem érhető el

A robot a robots.txt lekérésekor kapott státuszkódból is következtet. Ha a fájl nem létezik, és a szerver 404-et ad, a robot úgy veszi, hogy nincs korlátozás, mindent lekérhet. Ha a szerver hibával válaszol (5xx), a Google óvatosan jár el, és átmenetileg úgy kezeli, mintha minden tiltva lenne. Egy tartósan hibás robots.txt tehát megállíthatja a teljes webhely feltérképezését. Erről bővebben az 5xx hibákról szóló útmutató ír.

Több robot, több csoport

Egy keresőnek gyakran több robotja is van, és ezek külön névvel jelentkeznek. A Google például a képekhez külön robotot használ (Googlebot-Image), amely a saját nevére illő csoportot keresi, és ha nincs ilyen, a Googlebot csoportját vagy a * csoportot követi. Ezért ha a képek feltérképezését külön akarod szabályozni, arra külön csoport való, de ez csak ritkán indokolt.

A gyakorlatban a legtöbb webhelynek egyetlen * csoport elegendő. Külön csoport akkor kell, ha egy adott robotot szándékosan másként akarsz kezelni, például egy túl sűrűn lekérő, számodra haszontalan robotot teljesen kizársz. Minél több a csoport, annál nagyobb az esélye, hogy valamelyikből kimarad egy szükséges szabály.

Fő módszerek

A robots.txt írásának nincs egyetlen helyes sablonja, mert minden webhely más. Van viszont egy gondolkodási sorrend, amely a legtöbb esetben jól működik. A kiindulópont mindig az, hogy alapból minden szabad, és csak azt tiltod, aminek feltérképezése ártalmas vagy értelmetlen.

1. Leltár: milyen URL-típusok vannak

Mielőtt egyetlen sort írnál, gyűjtsd össze, milyen URL-típusokat hoz létre a webhely. Tartalmi lapok, kategóriák, termékek, belső keresés, szűrők, rendezések, kosár, fiók, admin felület, letöltések, statikus erőforrások. Egy feltérképező programmal és a szerver naplójával ez jól felmérhető. Az a cél, hogy lásd, hol keletkezik felesleges URL-tömeg.

2. Döntés URL-típusonként

Minden típusnál tedd fel a kérdést: van-e értelme, hogy a kereső lekérje? A tartalmi lapok, kategóriák és termékek kellenek. A kosár, a fiók és a pénztár lapjai jellemzően nem, mert személyre szabott, keresésből értelmetlen tartalmat adnak. A belső keresés találati oldalai és a rendezési paraméterek gyakran végtelen számú URL-t hoznak létre, ezeknél a tiltás megfontolandó. A szűrőknél árnyaltabb a kép, erről a faceted navigation útmutató szól.

3. A minimális szabálykészlet megírása

Írj annyi szabályt, amennyi szükséges, és ne többet. Minden sor egy lehetséges hibaforrás. A helyettesítő karaktereket óvatosan használd: egy túl tág minta fontos lapokat is letilthat. Minden szabály mellé érdemes megjegyzést írni arról, miért került be, mert egy év múlva ez már nem lesz nyilvánvaló.

4. Erőforrások szabadon hagyása

A kereső a lapokat a böngészőhöz hasonlóan jeleníti meg, ehhez szüksége van a CSS és JavaScript fájlokra, valamint a képekre. Ha ezeket letiltod, a kereső nem látja a lapot úgy, ahogy a látogató. Ez hibás értelmezéshez vezethet, például ahhoz, hogy a lapot nem tartja mobilbarátnak. A régi gyakorlat, amely a teljes rendszermappákat tiltotta, ezért ma kerülendő.

5. Az oldaltérkép megadása

A Sitemap sorral megadhatod az XML oldaltérkép teljes URL-jét. Ez nem kötelező, de hasznos, mert minden robot megtalálja, amely a robots.txt-t olvassa. Több oldaltérkép is megadható, mindegyik külön sorban.

Döntési szabály

  • Ha a lap ne legyen a találati listán, de lekérhető: noindex, nem robots.txt.
  • Ha a lap egy másik változata: canonical vagy átirányítás, nem robots.txt.
  • Ha az URL-típus végtelen vagy nagyon nagy számban keletkezik, és nincs keresési értéke: robots.txt tiltás.
  • Ha a tartalom bizalmas: hozzáférés-védelem, nem robots.txt.

Kidolgozott példa: egy webáruház robots.txt fájlja

Egy közepes webáruházban a naplófájlok azt mutatták, hogy a Googlebot lekéréseinek nagy része a rendezési és nézetváltó paraméteres URL-ekre ment. A termékeket ár, név és népszerűség szerint lehetett rendezni, rácsos és listás nézetben, és a kombinációk minden kategóriában külön URL-t kaptak. A tartalom ugyanaz volt, csak más sorrendben.

# Rendezés és nézet: ugyanaz a tartalom más sorrendben
User-agent: *
Disallow: /*?*rendezes=
Disallow: /*?*nezet=
# Személyes lapok
Disallow: /kosar/
Disallow: /penztar/
Disallow: /fiokom/

Sitemap: https://example.hu/sitemap.xml

A tiltás előtt ellenőrizték, hogy ezek a paraméteres URL-ek nincsenek-e jelentős számban az indexben. Ha lettek volna, előbb a canonical jelzést vagy a noindexet kellett volna rendbe tenni, és csak utána tiltani. A szűrőket (szín, méret, márka) nem tiltották le, mert ezek közül néhány kombinációra valódi keresés érkezik. Ezekhez külön döntés kellett.

Gyakori hibák

A robots.txt hibái azért veszélyesek, mert csendesek. A webhely a látogatók számára tökéletesen működik, csak a kereső nem jut be. A hibát gyakran csak hetekkel később veszi észre valaki, a forgalom csökkenéséből.

A fejlesztői tiltás élesben marad

Fejlesztés alatt sok csapat teljes tiltással zárja ki a robotokat a tesztkörnyezetből. Ha ez a fájl az élesítéskor átkerül, a teljes webhely tiltva lesz. Ez az egyik legsúlyosabb és leggyakoribb hiba. Tesztkörnyezethez biztosabb a jelszavas védelem, mert az nem kerül át véletlenül.

User-agent: *
Disallow: /

Ez a két sor mindent tilt. Egyetlen perjel a különbség a teljes tiltás és a semmit sem tiltó üres Disallow között.

Indexelés tiltása robots.txt-vel

Ahogy fent szerepelt, a Disallow nem akadályozza meg az indexelést, és a noindexet is láthatatlanná teszi. A Google a robots.txt-ben elhelyezett noindex sort sem támogatja, ezt kifejezetten jelezte is. Aki ilyen sort használ, annak a lapjai indexben maradhatnak.

Erőforrások tiltása

A CSS, JavaScript vagy képmappák tiltása miatt a kereső nem tudja megjeleníteni a lapot. Ha a tartalom egy része JavaScripttel töltődik be, a kereső azt a részt egyáltalán nem látja.

Túl tág minta

A Disallow: /p sor nemcsak a /p/ mappát tiltja, hanem minden útvonalat, amely p betűvel kezdődik: /partnerek/, /programok/, /penztar/. A záró perjel és a pontos útvonal elhagyása gyakori oka a véletlen tiltásnak.

Elfelejtett csoport-öröklés

Aki egy robotnak külön csoportot ír, és azt hiszi, hogy az a * csoport szabályait is örökli, az meglepődik. A robot csak a rá illő legpontosabb csoportot követi.

Tévhit: a Crawl-delay mindenhol működik

A Crawl-delay sort egyes keresők figyelembe veszik, a Google viszont nem. A Googlebot lekérési ütemét a szerver válaszidejéhez igazítja, és ha a szerver lassul vagy hibázik, magától visszafogja magát.

Rossz formátum vagy rossz válasz

A fájlnévnek pontosan kisbetűs robots.txt-nek kell lennie, és egyszerű szövegként kell kiszolgálni. Egyes webes alkalmazások minden ismeretlen útvonalra a főoldal HTML-jét adják vissza 200-as kóddal. Ilyenkor a robots.txt címen egy HTML lap jelenik meg, amelyből a robot nem tud értelmes szabályt kiolvasni, és a szándékolt tiltások nem hatnak. Érdemes a fájlt nyers formában, böngészőben megnyitni, és megnézni, valóban azt kapja-e a robot, amit írtál.

Utólagos tiltás indexben lévő lapokra

Ha egy URL-típus már jelentős számban bekerült az indexbe, és ekkor tiltod le robots.txt-vel, a lapok nem tűnnek el, hanem tartalom nélkül maradnak a találati listán. A helyes sorrend: előbb noindex vagy canonical, megvárni, amíg a kereső feldolgozza, és csak utána tiltani, ha a feltérképezési keret miatt még mindig szükséges. Sok esetben kiderül, hogy a tiltásra ekkor már nincs is szükség.

Egy fájl több domainre

Ha ugyanaz a rendszer több domaint vagy nyelvi aldomaint szolgál ki, könnyen előfordul, hogy mindegyik ugyanazt a robots.txt-t kapja, benne ugyanazzal a Sitemap sorral. Így egy aldomain a másik oldaltérképére hivatkozik, vagy egy tiltás olyan útvonalra vonatkozik, amely csak az egyik helyen létezik. Minden hostnak a saját szerkezetéhez illő fájl kell.

Mérés

A robots.txt ellenőrzése két részből áll: megnézed, hogy a fájl azt mondja-e, amit szeretnél, és megnézed, hogy a kereső úgy értelmezi-e. Mindkettőt érdemes minden módosítás után elvégezni, és rendszeresen is, mert a fájlt a tartalomkezelő rendszer vagy egy bővítmény is megváltoztathatja.

Közzététel előtti ellenőrzés

  1. Nyisd meg a fájlt böngészőben a gyökérben, és nézd meg, hogy 200-as kóddal, egyszerű szövegként töltődik-e be.
  2. Gyűjts össze tíz-húsz fontos URL-t (főoldal, kategóriák, fontos lapok, erőforrások), és ellenőrizd mindegyikre, hogy engedélyezett-e.
  3. Gyűjts össze néhány URL-t, amelyet tiltani szeretnél, és ellenőrizd, hogy tiltott-e.
  4. Nézd meg, hogy van-e külön csoport egyes robotoknak, és azokban megvan-e minden szükséges szabály.
  5. Ellenőrizd, hogy a Sitemap sor teljes, működő URL-re mutat.

Közzététel utáni mérés

A Google Search Console-ban van egy robots.txt jelentés, amely megmutatja, melyik robots.txt fájlokat találta a Google, mikor töltötte le őket utoljára, és talált-e bennük hibát. Az URL-vizsgálat eszköz egy konkrét URL-ről megmondja, hogy a robots.txt tiltja-e. Az indexelési jelentésben külön kategória jelzi azokat a lapokat, amelyeket a robots.txt letilt, és azokat is, amelyek tiltás ellenére indexbe kerültek. Ez utóbbi kategória figyelmeztető jel: vagy a tiltás felesleges, vagy noindexre lett volna szükség.

A szerver naplófájljai azt mutatják, hogy a robot ténylegesen hova jár. Ha a tiltás után is jelentős forgalmat látsz a tiltott útvonalakon a Googlebot nevében, érdemes ellenőrizni, valóban a Googlebot-e, mert más robotok is használhatják a nevét.

Második kidolgozott példa: eltűnő webhely költözés után

Egy cég új tartalomkezelő rendszerre költözött. Az átirányítások rendben voltak, a tartalom átkerült, a látogatók nem vettek észre semmit. Néhány nappal később a Search Console indexelési jelentésében gyorsan nőni kezdett a robots.txt által tiltott lapok száma, a teljesítményjelentésben pedig csökkentek a megjelenések.

A vizsgálat egy perc alatt megtalálta az okot: az új rendszer tesztkörnyezetéből átkerült a teljes tiltás. A javítás egyszerű volt, a fájlból ki kellett venni a perjelet, és a Search Console robots.txt jelentésében újra lehetett kérni a fájl letöltését. A tanulság az, hogy költözésnél a robots.txt ellenőrzése az élesítés ellenőrzőlistájának első pontja legyen, ne az utolsó, és hogy a tesztkörnyezetet ne robots.txt, hanem jelszó védje.

Ellenőrzőlista

  • A fájl a gyökérben van, pontosan robots.txt néven, 200-as kóddal.
  • Nincs benne teljes tiltás, hacsak nem szándékos.
  • A CSS, JavaScript és képfájlok lekérhetők.
  • Minden tiltásnak van oka, és ez megjegyzésben szerepel.
  • Nincs olyan lap tiltva, amelyen noindexnek kellene hatnia.
  • A külön robotcsoportok tartalmazzák az összes szükséges szabályt.
  • A Sitemap sor működő URL-re mutat.
  • Minden aldomain és protokollváltozat saját, helyes fájlt kap.

Kapcsolódó részletes útmutatók

A robots.txt a feltérképezés vezérlésének egyik eszköze, és a többi eszközzel együtt érdemes használni. Az indexelési jelzésekről a meta robots és az X-Robots-Tag útmutató szól, az oldaltérképről az XML sitemap útmutató, a robot idejének beosztásáról a crawl budget és az URL-paraméterek útmutatója. A technikai SEO egészéről az összefoglaló lap ad áttekintést.

Csináltassuk meg helyetted

Ha ez sok, mi elvégezzük. Egy munkanapon belül konkrét ajánlatot kapsz.

Ajánlatot kérek