Tolkare för robots.txt

Klistra in en robots.txt och läs den på samma sätt som en sökrobot gör, enligt RFC 9309 (Robots Exclusion Protocol, standardiserad 2022): grupper för användaragenter, Allow/Disallow-regler, webbkartor och okända direktiv, allt uppställt — samt en granskning av de klassiska misstagen (tomma disallow-rader, okända direktiv, för stora filer). Matcharen besvarar sedan den egentliga frågan: klistra in en användaragent och en sökväg och få tillbaka tillåt/neka-utslaget med den exakta regel som avgjorde det — längsta träff, jokertecknet *, slutankaret $ och sammanslagning av grupper, precis som standarden anger. Allt körs i webbläsaren.
Inget har tolkats ännu. Klistra in en robots.txt ovan och tryck på Tolka fil, eller läs in ett exempel.
Matcharen arbetar med texten som för närvarande finns i rutan ovan (ingen anledning att trycka på Tolka först). Användaragenten matchas enligt RFC 9309: värdet User-agent i filen måste vara en skiftlägesoberoende delsträng av det som skrivs här — så att skriva ExampleBot/1.0 matchar en grupp som deklarerats som ExampleBot. En fullständig URL godtas som sökväg.
Användaragent (en riktig UA-sträng fungerar) Sökväg eller fullständig URL
Inget utslag ännu. Tryck på Testa behörighet.
Hämta filen så här:öppnahttps://your-domain.example/robots.txti en webbläsare: markera allt, kopiera och klistra in här — ellercurl -s https://your-domain.example/robots.txti en terminal. Den här sidan hämtar aldrig något själv: den läser endast det som klistras in. För att granska svarsrubrikerna som bar filen, kör dem genomHTTP-headertolkare.
Självtest
Kör tolkaren och matcharen igen mot RFC 9309:s referensvektorer: längsta-matchning-prioritet (inklusive lika-längd-fallet där tillåt slår neka och fallet med djupa sökvägar), sammanslagning av grupper, den*gruppreserv, skiftlägeskänslighet för sökvägar och användaragenter, jokertecken, den$ankare, den implicita tillåtelsen av/robots.txt, procentkodsnormalisering, extrahering av webbkartor och de negativa sökvägarna. Inget skickas någonstans.
Vad är robots.txt?
Med en mening: robots.txt är en textfil i en webbplats rot som talar om för välskötta sökrobotar vilka sökvägar de får hämta — en frivillig konvention, standardiserad som RFC 9309 år 2022, som varje större sökrobot respekterar.
Hur en fil ser ut

En fil är en följd av poster. En grupp börjar med en eller flera User-agent-rader, följt av Allow- och Disallow-regler som gäller för dessa sökrobotar. En ny User-agent-rad efter regler inleder en ny grupp; flera User-agent-rader i följd delar en grupp (en sökrobot med två namn behöver detta). Fristående poster som Sitemap kan förekomma var som helst. # inleder en kommentar var som helst på en rad. Fältnamn är skiftlägesoberoende; sökvägar är det inte.

LinjeBetyder
User-agent: foobotReglerna nedan gäller för sökrobotar vars namn innehåller foobot (skiftlägesoberoende)
User-agent: *Reglerna nedan gäller för alla sökrobotar utan en mer specifik grupp
Disallow: /private/Hämta inte sökvägar som börjar med /private/
Allow: /private/public/Undantag som slår det ovan nekade för dessa sökvägar (längsta matchning)
Disallow: (tom)Inget är nekat — den klassiska idiomen "tillåt allt"
Sitemap: https://…/sitemap.xmlVar webbkartan finns; sökrobotar kan samla in flera
Crawl-delay: 30Inte i RFC 9309 — ett äldre tillägg; större sökrobotar ignorerar det eller tolkar det själva
Hur ett utslag fastställs (RFC 9309 §2.2.2)

1. Hitta gruppen vars User-agent-värde är en delsträng av sökrobotens namn; slå ihop alla matchande grupper. Om ingen finns, använd gruppen *; om det inte heller finns någon sådan, är allt tillåtet. 2. Testa sökvägen mot varje regel: matchningen är prefixbaserad, skiftlägeskänslig, och */$ fungerar som jokertecken. 3. Den längsta matchande regeln vinner; vid lika längd vinner Allow över Disallow. Ingen matchande regel betyder tillåtet. Och oavsett reglerna är /robots.txt i sig implicit tillåten — en sökrobot skulle annars inte kunna läsa reglerna.

Vanliga misstag
  • Att tro att robots.txt blockerar åtkomst. Det är en begäran till väluppfostrade sökrobotar, inte en mur: skrapare som inte följer reglerna ignorerar den helt, och den påverkar inte vad en webbläsare kan öppna. För verkligt skydd används autentisering; för att styra endast sökmotorer är robots.txt rätt verktyg.
  • Att tro att Disallow: / tar bort en sida från sökresultaten. Det stoppar genomsökning, inte indexering: om andra sidor länkar till sidan kan en sökmotor ändå lista URL:en (utan beskrivning). noindex-metataggen eller svarsrubriken är borttagningsverktyget.
  • Att förlita sig på ordning i stället för längd. Den första matchande regeln vinner inte — den mest specifika (längsta) vinner. Att byta ordning på rader för att "rätta" beteendet gör ingenting; gör i stället den avsedda regeln längre.
  • Att blockera CSS och JS. Att neka /*.css$ och /*.js$ var förr en vanlig "optimering"; renderare behöver nu dessa filer för att se sidan som besökare gör, och en halvrenderad sida kan rankas sämre.
  • Att använda en stor grupp som dokumentation. Kommentarsrader inuti en grupp är bra, men ett stycke med fri text före den första User-agent-raden utan # är ett tolkningsfel som kan förvirra toleranta tolkare.
Vanliga frågor

Stöder alla sökrobotar Allow, * och $? De stora gör det, och RFC 9309 standardiserar alla tre. Vissa mindre eller äldre sökrobotar förstår endast Disallow och läser * bokstavligt — ett skäl att hålla reglerna enkla när det går.

Vad betyder en tom Disallow:? "Neka ingenting" — gruppen tillåter uttryckligen allt. Den dyker vanligtvis upp när någon redigerar en mall och tar bort sökvägen men inte direktivet; granskningen påpekar det.

Hur stor får filen vara? RFC 9309 kräver att tolkare klarar åtminstone 500 KiB; utöver det kan en sökrobot sluta läsa och behandla resten som nekat. Håll den klart under gränsen, och om den växer sig stor, ifrågasätt om styrningen av genomsökning hör hemma i sidhuvudena i stället.

Varför säger matcharen att /robots.txt är tillåten även under Disallow: /? Därför att standarden säger det uttryckligen: robotfilen själv är implicit tillåten. Pythons urllib.robotparser implementerar bland annat inte detta specialfall — en av de små avvikelserna mellan verkliga tolkare som den här sidan dokumenterar i sitt självtest.

Är en Disallow-sökväg skiftlägeskänslig? Ja. /Private/ och /private/ är olika sökvägar. Fältnamnet disallow kan skrivas med vilket skiftläge som helst, men värdet måste matcha URL:en exakt.