robots.txt: što blokirati, a što ne
Modul 3: Tehnička osnova stranice · Vrijeme čitanja: 13 min
Cilj učenja: Nakon ove lekcije moći ćete čitati i pisati datoteku robots.txt, sami izračunati smije li Googlebot posjetiti neku adresu i objasniti što se događa kada datoteka nedostaje ili je nedostupna. Znat ćete i zašto robots.txt nije zaštita ni noindex.
Ključni pojmovi: robots.txt (RFC 9309), crawler, grupa, User-agent, Disallow, Allow, najdulje podudaranje, jednaka duljina (pobjeđuje Allow), * i $, Sitemap:, statusni kod datoteke robots.txt (4xx, 5xx), 500 KiB, 24 sata predmemorije, nije zaštita, nije noindex, AI crawleri (Google-Extended, GPTBot)
Natpis na ulaznim vratima
robots.txt je obična tekstualna datoteka u korijenskoj mapi Vaše web-stranice, uvijek na istoj adresi: https://www.example.com/robots.txt. Pristojan crawler (lekcija 1.2) najprije zatraži tu datoteku i pročita koje dijelove stranice ne smije posjetiti. To je natpis na ulaznim vratima, a ne brava: Googlebot i Bingbot ga poštuju, ali zlonamjerni robot jednostavno pročita natpis i uđe.
Od 2022. protokol je službeni internetski standard: RFC 9309. Google uz to točno opisuje kako Googlebot čita datoteku. U ovoj lekciji koristimo oba izvora.
Nekoliko stalnih pravila:
- Datoteka se nalazi u korijenskoj mapi hosta. Datoteka robots.txt u
/blog/robots.txtneće se čitati. - Vrijedi samo za taj host, taj protokol i taj port.
https://www.example.com/robots.txtne vrijedi zahttps://shop.example.com/; on treba vlastitu datoteku. - To je običan tekst u kodiranju UTF-8.
Kako je datoteka građena
User-agent: *
Disallow: /winkelmand/
Disallow: /zoeken
Allow: /zoeken/tips
User-agent: Googlebot
Disallow: /concepten/
Sitemap: https://www.example.com/sitemap.xmlDatoteka se sastoji od grupa. Grupa počinje jednim ili više redaka User-agent:, a zatim slijede pravila Disallow: (ne posjećivati) i Allow: (smije se posjetiti). Putanja iza Disallow: početak je adrese: Disallow: /zoeken blokira /zoeken, /zoeken?q=rozen i također /zoekenmachine, jer sve počinju s /zoeken.
Redak Sitemap: ne pripada nijednoj grupi i govori gdje se nalazi Vaša karta web-stranice (lekcija 3.4). Google zahtijeva potpunu adresu s https:// i nazivom hosta.
Disallow: bez putanje ne blokira ništa. Disallow: / blokira sve.
Koja grupa vrijedi?
Crawler odabire jednu grupu: onu s najspecifičnijim nazivom koji mu odgovara. Googlebot dakle slijedi grupu User-agent: Googlebot ako postoji i tada potpuno zanemaruje grupu *. U gornjem primjeru Googlebot stoga smije u /winkelmand/: to pravilo nalazi se samo u grupi *. Ovo je jedna od najčešćih pogrešaka: tko izradi posebnu grupu za Googlebot, mora u njoj ponoviti sva pravila koja vrijede i za Google.
Naziv ne razlikuje velika i mala slova (googlebot = Googlebot). Ako postoje dvije grupe za isti crawler, Google ih spaja.
Koje pravilo pobjeđuje?
Unutar grupe jedna adresa može odgovarati više pravila. Tada vrijedi:
- Pobjeđuje najdulje pravilo koje se podudara (najspecifičnija putanja).
- Ako su
AllowiDisallowtočno jednake duljine, pobjeđujeAllow. Google to naziva "najmanje restriktivnim pravilom".
Dva znaka imaju posebno značenje:
| Znak | Značenje | Primjer | Obuhvaća | Ne obuhvaća |
|---|---|---|---|---|
* | nula ili više proizvoljnih znakova | Disallow: /*?sessie= | /rozen?sessie=12 | /rozen?kleur=rood |
$ | kraj adrese | Disallow: /*.pdf$ | /folder.pdf | /folder.pdf?v=2 |
Primjer izračuna s gornjom grupom *, za crawler Bingbot (koji nema vlastitu grupu):
| Adresa | Pravila koja se podudaraju | Ishod |
|---|---|---|
/winkelmand/ | Disallow: /winkelmand/ | nije dopušteno |
/zoeken/tips | Disallow: /zoeken (7 znakova) i Allow: /zoeken/tips (12) | dopušteno: pobjeđuje najdulje |
/zoeken?q=rozen | Disallow: /zoeken | nije dopušteno |
/bruidsboeketten | nijedno | dopušteno |
/robots.txt | (uvijek) | dopušteno: sama datoteka robots.txt uvijek je dopuštena |
Kada datoteka ne postoji ili poslužitelj zapinje
Što Google radi ovisi o statusnom kodu kojim Vaš poslužitelj odgovara na /robots.txt:
| Odgovor | Što Google radi |
|---|---|
| 200 (pronađeno) | Čita pravila |
| Preusmjeravanje (301, 302) | Slijedi najmanje pet koraka; nakon toga Google to tretira kao 404 |
| 4xx, poput 404 ili 403 (osim 429) | Kao da datoteka robots.txt ne postoji: sve je dopušteno |
| 5xx ili nema veze | Prvih 12 sati Google ne indeksira stranicu i pokušava ponovno; nakon toga do 30 dana koristi posljednju ispravnu verziju iz predmemorije. Ako problem i dalje traje, a stranica inače radi, Google se ponaša kao da robots.txt ne postoji |
Datoteka robots.txt koja nedostaje dakle nije problem: tada je sve dopušteno. Datoteka robots.txt koja vraća pogrešku poslužitelja jest problem: Google tada privremeno prestaje s pretraživanjem. RFC 9309 tu je još stroži: kod nedostupne datoteke crawler mora pretpostaviti da je sve zabranjeno.
Nadalje:
- Google čita najviše 500 KiB; sve iza toga zanemaruje se.
- Google datoteku robots.txt obično drži u predmemoriji do 24 sata. Promjena stoga ne djeluje odmah. U Search Consoleu pod Postavke (Settings) nalazi se izvješće robots.txt: koju je verziju Google posljednju preuzeo, s pogreškama i upozorenjima, te gumb za ponovno preuzimanje.
- Google poznaje samo
User-agent,Allow,DisallowiSitemap. Pravila poputCrawl-delayiliNoindexGooglebot zanemaruje.
Što robots.txt ne radi
Nije zaštita
Svatko može pročitati Vašu datoteku robots.txt, pa i onaj sa zlim namjerama. Pravilo Disallow: /beheer-oud/ upravo pokazuje gdje se nalazi nešto zanimljivo. RFC 9309 to i sam navodi: pravila nisu oblik kontrole pristupa. Stvarnu zaštitu postižete lozinkom ili tako da poslužitelj odbija pristup, primjerice pomoću .htaccess (vidi Dodatno štivo).
Nije noindex
Ovo je najvažnija pouka. robots.txt upravlja pretraživanjem (crawlanjem), a ne indeksiranjem (lekcija 1.3). Google doslovno piše da robots.txt nije način da stranicu držite izvan Googlea. Ako druge stranice upućuju na blokiranu adresu, ta se adresa ipak može pojaviti u rezultatima pretraživanja, samo bez opisa.
Želite li stranicu zadržati izvan rezultata pretraživanja, koristite noindex (u <meta name="robots"> ili u zaglavlju X-Robots-Tag) ili stavite stranicu iza lozinke. I pazite na klasičnu zamku: ako stranicu s noindex u datoteci robots.txt također stavite na Disallow, Google ne može posjetiti stranicu pa noindex nikada neće pročitati.
Ne blokirajte dijelove koji su Googleu potrebni
Ne blokirajte mape sa stilskim datotekama, skriptama ili slikama koje su Vašoj stranici potrebne za ispravan prikaz. Google gleda Vašu stranicu kao preglednik; bez tih datoteka Google stranicu slabije razumije.
AI crawleri
Sve više tvrtki prikuplja web-stranice za umjetnu inteligenciju. Neke od njih možete usmjeriti pomoću datoteke robots.txt:
Google-Extendednije zaseban robot, nego naziv u datoteci robots.txt kojim određujete smije li Google koristiti Vaš sadržaj za treniranje modela Gemini i za grounding. Google piše da to ne utječe na Vaše uvrštavanje ni poziciju u Google pretraživanju.GPTBottvrtke OpenAI prikuplja stranice koje se mogu koristiti za treniranje modela.OAI-SearchBotsluži za funkciju pretraživanja u ChatGPT-u: ako ga blokirate, Vaša se stranica neće pojavljivati u odgovorima pretraživanja ChatGPT-a.
User-agent: GPTBot
Disallow: /Hoćete li to učiniti, Vaš je izbor, a ne tehnička nužnost. Ako slučajno blokirate robota tražilice (Googlebot, Bingbot, OAI-SearchBot), ondje ćete biti slabije vidljivi.
U praksi: gdje se nalazi Vaša datoteka robots.txt?
- AI Builder tvrtke WebOké pri objavi sam izrađuje datoteku robots.txt s
User-agent: *,Allow: /i retkomSitemap:. Ako stranicu postavite na neindeksiranje ili je riječ o besplatnoj demonstraciji, u njoj stojiDisallow: /. - WordPress izrađuje virtualnu datoteku robots.txt s poveznicom na kartu web-stranice. Ako sami stavite datoteku
robots.txtu web-mapu, ona ima prednost. - Vlastita stranica na hosting paketu: datoteku
robots.txtstavite u web-mapu (u DirectAdminupublic_html) putem File Manager ili FTP.
Kod drugih pružatelja usluga postupak je sličan: datoteka uvijek mora biti dostupna na /robots.txt Vašeg hosta.
Sažetak
- robots.txt nalazi se na
/robots.txtsvakog hosta i pristojnim crawlerima govori što ne smiju posjetiti. - Crawler slijedi jednu grupu (najspecifičniji naziv, inače
*). Unutar grupe pobjeđuje najdulje pravilo; pri jednakoj duljini pobjeđujeAllow. - 404 znači "sve je dopušteno", a pogreška poslužitelja privremeno zaustavlja Googleovo pretraživanje. Google čita 500 KiB i drži datoteku u predmemoriji do 24 sata.
- robots.txt nije zaštita ni noindex. Ne blokirajte stranicu s
noindexu datoteci robots.txt. - AI crawlere poput
GPTBoti nazivGoogle-Extendedmožete urediti zasebno, bez posljedica za Google pretraživanje.
Kviz
Zadatak
Zadatak A3.3: Provjera Vaše datoteke robots.txt. Unesite svoju domenu i uz nju tri adrese svoje stranice (primjerice početnu stranicu, stranicu proizvoda i košaricu ili stranicu za pretraživanje) te za svaku adresu svoje očekivanje: smije li je Googlebot pretraživati, da ili ne? Program preuzima Vašu datoteku robots.txt, provjerava statusni kod, veličinu, grupe i redak Sitemap: te za svaku adresu izračunava što Googlebot smije prema pravilima iz ove lekcije. Je li Vaše očekivanje točno? Nemate vlastitu stranicu? Upotrijebite www.wikipedia.org.
Dodatno štivo
Koraci u ovim člancima vrijede za WebOké upravljačke ploče; kod drugih pružatelja usluga postupak je sličan.
- DirectAdmin priručnik 11.1: Otvaranje File Manager: mape u Vašem paketu
- Blokiranje datoteka putem .htaccess, npr. plugin-googlemap2-proxy.php
- DirectAdmin priručnik 11.4: Prikaz i uređivanje skrivenih datoteka poput .htaccess
- Google Search Central, kako Google tumači robots.txt: https://developers.google.com/search/docs/crawling-indexing/robots/robots_txt
- Google Search Central, uvod u robots.txt: https://developers.google.com/search/docs/crawling-indexing/robots/intro
- RFC 9309, Robots Exclusion Protocol: https://www.rfc-editor.org/rfc/rfc9309.html
- Google, pregled crawlera (Google-Extended): https://developers.google.com/crawling/docs/crawlers-fetchers/google-common-crawlers
- OpenAI, pregled crawlera (GPTBot, OAI-SearchBot): https://developers.openai.com/api/docs/bots
