3 modulis · 3.3
robots.txt: ką blokuoti, o ko ne
3 modulis: Puslapio techninis pagrindas · Skaitymo laikas: 13 min.
Mokymosi tikslas: Po šios pamokos galėsite skaityti ir rašyti robots.txt, patys apskaičiuoti, ar Googlebot gali lankyti adresą, paaiškinti, kas nutinka, kai failo nėra arba jis nepasiekiamas, ir žinosite, kodėl robots.txt nėra nei apsauga, nei noindex.
Pagrindinės sąvokos: robots.txt (RFC 9309), tikrintuvas (crawler), grupė, User-agent, Disallow, Allow, ilgiausias atitikmuo, vienodas ilgis (laimi Allow), * ir $, Sitemap:, robots.txt būsenos kodas (4xx, 5xx), 500 KiB, 24 valandų talpykla, ne apsauga, ne noindex, DI tikrintuvai (Google-Extended, GPTBot)
Lentelė prie lauko durų
robots.txt yra paprastas tekstinis failas pagrindiniame Jūsų svetainės aplanke, visada tuo pačiu adresu: https://www.example.com/robots.txt. Tvarkingas tikrintuvas (pamoka 1.2) pirmiausia užklausia šį failą ir perskaito, kurių svetainės dalių jam negalima lankyti. Tai lentelė prie lauko durų, o ne spyna: Googlebot ir Bingbot jos laikosi, bet piktavalis robotas lentelę tiesiog perskaito ir eina toliau.
Nuo 2022 m. šis protokolas yra oficialus interneto standartas: RFC 9309. Be to, Google tiksliai aprašo, kaip Googlebot skaito šį failą. Šioje pamokoje remiamės abiem šaltiniais.
Kelios pastovios taisyklės:
- Failas yra pagrindiniame serverio (host) aplanke. Failas
/blog/robots.txtneskaitomas. - Jis galioja tik tam serveriui, tam protokolui ir tam prievadui.
https://www.example.com/robots.txtnegalioja adresuihttps://shop.example.com/; jam reikia atskiro failo. - Tai paprastas tekstas UTF-8 koduote.
Kaip sudarytas failas
User-agent: *
Disallow: /winkelmand/
Disallow: /zoeken
Allow: /zoeken/tips
User-agent: Googlebot
Disallow: /concepten/
Sitemap: https://www.example.com/sitemap.xmlFailas sudarytas iš grupių. Grupė prasideda viena ar keliomis eilutėmis User-agent:, po jų eina taisyklės Disallow: (nelankyti) ir Allow: (lankyti galima). Kelias po Disallow: yra adreso pradžia: Disallow: /zoeken blokuoja /zoeken, /zoeken?q=rozen ir net /zoekenmachine, nes visi jie prasideda /zoeken.
Eilutė Sitemap: nepriklauso jokiai grupei ir nurodo, kur yra Jūsų svetainės schema (pamoka 3.4). Google reikalauja viso adreso su https:// ir serverio pavadinimu.
Disallow: be kelio nieko neblokuoja. Disallow: / blokuoja viską.
Kuri grupė galioja?
Tikrintuvas pasirenka vieną grupę: tą, kurios pavadinimas jam tinka ir yra konkrečiausias. Taigi Googlebot laikosi grupės User-agent: Googlebot, jei ji yra, ir tada visiškai nepaiso grupės *. Aukščiau pateiktame pavyzdyje Googlebot gali lankyti /winkelmand/ (pirkinių krepšelis): ši taisyklė yra tik grupėje *. Tai viena dažniausių klaidų: kas sukuria atskirą Googlebot grupę, turi joje pakartoti visas taisykles, kurios taip pat galioja Google.
Pavadinime didžiosios ir mažosios raidės nesiskiria (googlebot = Googlebot). Jei tam pačiam tikrintuvui skirtos dvi grupės, Google jas sujungia.
Kuri taisyklė laimi?
Grupėje adresas gali atitikti kelias taisykles. Tada galioja:
- Laimi ilgiausia atitinkanti taisyklė (konkrečiausias kelias).
- Jei
AllowirDisallowyra lygiai vienodo ilgio, laimiAllow. Google tai vadina "mažiausiai ribojančia taisykle".
Du ženklai turi ypatingą reikšmę:
| Ženklas | Reikšmė | Pavyzdys | Atitinka | Neatitinka |
|---|---|---|---|---|
* | nulis ar daugiau bet kokių ženklų | Disallow: /*?sessie= | /rozen?sessie=12 | /rozen?kleur=rood |
$ | adreso pabaiga | Disallow: /*.pdf$ | /folder.pdf | /folder.pdf?v=2 |
Skaičiavimo pavyzdys su aukščiau pateikta grupe *, tikrintuvui Bingbot (kuris neturi savo grupės):
| Adresas | Atitinkančios taisyklės | Rezultatas |
|---|---|---|
/winkelmand/ | Disallow: /winkelmand/ | negalima |
/zoeken/tips | Disallow: /zoeken (7 ženklai) ir Allow: /zoeken/tips (12) | galima: laimi ilgiausia |
/zoeken?q=rozen | Disallow: /zoeken | negalima |
/bruidsboeketten | nėra | galima |
/robots.txt | (visada) | galima: pats robots.txt visada leidžiamas |
Kai failo nėra arba serveris sutrinka
Ką daro Google, priklauso nuo būsenos kodo, kuriuo Jūsų serveris atsako į /robots.txt:
| Atsakas | Ką daro Google |
|---|---|
| 200 (rasta) | Perskaito taisykles |
| Nukreipimas (301, 302) | Seka bent penkis žingsnius; po to Google tai laiko 404 |
| 4xx, pvz., 404 ar 403 (išskyrus 429) | Tarsi robots.txt nebūtų: viskas leidžiama |
| 5xx arba nėra ryšio | Pirmąsias 12 valandų Google svetainės netikrina ir bando iš naujo; vėliau iki 30 dienų naudoja paskutinę veikusią versiją iš talpyklos. Jei ir po to nepavyksta, o svetainė kitaip veikia, Google elgiasi taip, lyg robots.txt nebūtų |
Taigi trūkstamas robots.txt nėra problema: tada viskas leidžiama. O robots.txt, kuris grąžina serverio klaidą, tikrai yra problema: tada Google laikinai nustoja tikrinti svetainę. RFC 9309 čia dar griežtesnis: kai failas nepasiekiamas, tikrintuvas turi laikyti, kad viskas draudžiama.
Be to:
- Google perskaito daugiausia 500 KiB; kas yra toliau, nepaisoma.
- Google paprastai laiko robots.txt talpykloje iki 24 valandų. Todėl pakeitimas suveikia ne iš karto. Search Console skiltyje Settings rasite robots.txt ataskaitą (robots.txt report): kurią versiją Google paskutinį kartą atsisiuntė, su klaidomis ir įspėjimais, ir mygtuką, leidžiantį paprašyti atsisiųsti iš naujo.
- Google atpažįsta tik
User-agent,Allow,DisallowirSitemap. Taisyklių kaipCrawl-delayarNoindexGooglebot nepaiso.
Ko robots.txt nedaro
Tai nėra apsauga
Jūsų robots.txt gali perskaityti bet kas, net ir piktavaliai. Taisyklė Disallow: /beheer-oud/ kaip tik parodo, kur yra kažkas įdomaus. Tai teigia ir pats RFC 9309: šios taisyklės nėra prieigos apsaugos forma. Tikrai apsaugoti galima slaptažodžiu arba nurodant serveriui atsisakyti suteikti prieigą, pavyzdžiui, su .htaccess (žr. Skaitykite daugiau).
Tai nėra noindex
Tai svarbiausia pamoka. robots.txt valdo tikrinimą (crawling), o ne indeksavimą (pamoka 1.3). Google tiesiai rašo, kad robots.txt nėra būdas išlaikyti puslapį už Google ribų. Jei kitos svetainės nurodo į užblokuotą adresą, jis vis tiek gali atsirasti paieškos rezultatuose, tik be aprašymo.
Jei norite, kad puslapio nebūtų paieškos rezultatuose, naudokite noindex (žymoje <meta name="robots"> arba antraštės eilutėje X-Robots-Tag) arba apsaugokite puslapį slaptažodžiu. Saugokitės klasikinių spąstų: jei puslapį su noindex dar ir užblokuosite robots.txt taisykle Disallow, Google negalės jo aplankyti, todėl niekada neperskaitys noindex.
Neblokuokite dalių, kurių reikia Google
Neblokuokite aplankų su stilių failais, scenarijais ar paveikslėliais, kurių Jūsų puslapiui reikia, kad jis būtų tinkamai rodomas. Google žiūri į Jūsų puslapį taip, kaip naršyklė; be šių failų Google puslapį supranta prasčiau.
DI tikrintuvai
Vis daugiau įmonių renka tinklalapius dirbtiniam intelektui. Į kai kurias iš jų galite kreiptis per robots.txt:
Google-Extendednėra atskiras robotas, o pavadinimas robots.txt faile, kuriuo nurodote, ar Google gali naudoti Jūsų turinį Gemini modeliams mokyti ir grounding funkcijai. Google rašo, kad tai neturi įtakos Jūsų įtraukimui ar pozicijai Google paieškoje.- OpenAI
GPTBotrenka puslapius, kurie gali būti naudojami modeliams mokyti.OAI-SearchBotskirtas ChatGPT paieškos funkcijai: jei jį užblokuosite, Jūsų svetainė nebus rodoma ChatGPT paieškos atsakymuose.
User-agent: GPTBot
Disallow: /Ar to norite, yra pasirinkimo, o ne techninės būtinybės klausimas. Jei netyčia užblokuosite paieškos robotą (Googlebot, Bingbot, OAI-SearchBot), ten būsite randami prasčiau.
Praktikoje: kur yra Jūsų robots.txt?
- WebOké AI Builder skelbdamas svetainę pats sukuria robots.txt su
User-agent: *,Allow: /ir eiluteSitemap:. Jei nustatote, kad svetainė nebūtų indeksuojama, arba tai nemokama demonstracinė versija, ten busDisallow: /. - WordPress sukuria virtualų robots.txt su nuoroda į svetainės schemą. Jei patys įkelsite failą
robots.txtį svetainės aplanką, pirmenybė teikiama jam. - Nuosava svetainė prieglobos plane: failą
robots.txtįkelkite į svetainės aplanką (DirectAdmin atvejupublic_html) per Failų tvarkyklė arba FTP.
Pas kitus paslaugų teikėjus tai veikia panašiai: failas visada turi būti pasiekiamas adresu /robots.txt Jūsų serveryje.
Santrauka
- robots.txt yra kiekvieno serverio adresu
/robots.txtir nurodo tvarkingiems tikrintuvams, ko jiems negalima lankyti. - Tikrintuvas laikosi vienos grupės (konkrečiausio pavadinimo, kitaip
*). Grupėje laimi ilgiausia taisyklė; esant vienodam ilgiui, laimiAllow. - 404 reiškia "viskas leidžiama", serverio klaida laikinai sustabdo Google tikrinimą. Google perskaito 500 KiB ir laiko talpykloje iki 24 valandų.
- robots.txt nėra nei apsauga, nei noindex. Neblokuokite
noindexpuslapio robots.txt faile. - DI tikrintuvus, tokius kaip
GPTBot, ir pavadinimąGoogle-Extendedgalite valdyti atskirai, be pasekmių Google paieškai.
Testas (quiz)
Užduotis
Užduotis A3.3: Jūsų robots.txt patikra. Įveskite savo domeną ir tris savo svetainės adresus (pavyzdžiui, pagrindinį puslapį, produkto puslapį ir pirkinių krepšelį ar paieškos puslapį), prie kiekvieno nurodydami savo lūkestį: ar Googlebot gali jį tikrinti, taip ar ne? Programa atsisiunčia Jūsų robots.txt, patikrina būsenos kodą, dydį, grupes ir eilutę Sitemap: ir kiekvienam adresui apskaičiuoja, ką Googlebot gali pagal šios pamokos taisykles. Ar Jūsų lūkestis pasitvirtina? Neturite savo svetainės? Naudokite www.wikipedia.org.
Skaitykite daugiau
Šių straipsnių žingsniai galioja WebOké valdymo skydeliams; pas kitus paslaugų teikėjus tai veikia panašiai.
- DirectAdmin vadovas 11.1: Atidaryti failų tvarkyklę: Jūsų paslaugų paketo katalogai
- Failų, pvz., plugin-googlemap2-proxy.php, blokavimas per .htaccess
- DirectAdmin vadovas 11.4: Paslėptų failų, tokių kaip .htaccess, rodymas ir redagavimas
- Google Search Central, kaip Google interpretuoja robots.txt: https://developers.google.com/search/docs/crawling-indexing/robots/robots_txt
- Google Search Central, įvadas į 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, tikrintuvų apžvalga (Google-Extended): https://developers.google.com/crawling/docs/crawlers-fetchers/google-common-crawlers
- OpenAI, tikrintuvų apžvalga (GPTBot, OAI-SearchBot): https://developers.openai.com/api/docs/bots
