robots.txt to prosty plik tekstowy umieszczony w katalogu głównym serwisu, który instruuje roboty indeksujące (crawlers), które zasoby mogą być crawlowane, a które powinny zostać pominięte dzięki odpowiednim dyrektywom dla robotów (np. roboty Google). Pamiętaj jednak: robots.txt dotyczy crawlowania, a nie indeksowania – samo zablokowanie URL-a w robots.txt nie gwarantuje jego usunięcia z indeksu.
Po co go stosować? Żeby kierować ruchem robotów, dbać o serwer, minimalizować marnowanie crawl budgetu i wykluczać szum (np. parametry filtrów). Kogo dotyczy? Właścicieli stron, sklepów i blogów, administratorów, marketerów i deweloperów. Jakie ma ograniczenia? Działa w ramach Robots Exclusion Protocol i jest dobrowolnie respektowany – nie każdy crawler będzie grzeczny. Z drugiej strony, dobrze przygotowane dyrektywy pomagają robotowi indeksującemu efektywnie odwiedzać witrynę bez dławienia serwera nadmiarem żądań HTTP. W praktyce operujesz dyrektywami na poziomie User-agent i ścieżek URL/host.
Spis treści
Jak działa Robots Exclusion Protocol?
Robot Google odwiedza https://domena.pl/robots.txt, czyta sekcje User-agent, dopasowuje reguły (pattern matching), a następnie stosuje najbardziej precyzyjne zasady (priorytet reguł). Proste znaki specjalne jak wildcard * oraz znak końca dopasowania $ pomagają sterować dopasowaniem do ścieżek URL. Komentarze zaczynające się od # są ignorowane przez boty. To mechanizm dobrowolny – nie wszystkie boty będą go szanować, choć kluczowe wyszukiwarki zwykle tak.
Składnia pliku robots.txt
Poniżej znajdziesz najważniejsze dyrektywy, które przydadzą Ci się przy pozycjonowaniu stron. Każda definicja zaczyna się krótką odpowiedzią „co robi”, a potem dostajesz mikro-przykłady w kodzie. Tak – dokładnie tak, jak lubi robot google i zespół devów.
User-agent
Co robi: wskazuje, do którego bota (robota indeksującego) odnoszą się kolejne reguły.
User-agent: *
Disallow: /private/
User-agent: Googlebot
Allow: /blog/
Disallow: /beta/
User-agent: Bingbot
Crawl-delay: 5
User-agent: Googlebot-Image
Disallow: /tmp/
User-agent: AdsBot-Google
Allow: /public/
Disallow i Allow
Co robi: Disallow blokuje crawlowanie danej ścieżki, a Allow je dopuszcza - przy konflikcie wygrywa reguła dokładniej dopasowana (precedencja na korzyść precyzji).
User-agent: *
Disallow: /private/
Allow: /private/plik-dozwolony.html
# wzorce:
Disallow: /search # blokuje /search i wszystko poniżej
Disallow: /koszyk/ # blokuje ścieżkę i potomków
Allow: /public/css/*.css # UWAGA: Google wspiera *, ale nie regexy pełne
Sitemap
Co robi: podaje lokalizację mapy stron XML (możesz wskazać wiele plików; obsługuje subdomeny i zewnętrzne hosty).
Sitemap: https://www.example.com/sitemap.xml
Sitemap: https://cdn.example.com/sitemaps/sitemap-posts.xml
Sitemap: https://sklep.example.com/sitemap.xml
Crawl-delay (obsługa zależna od bota)
Co robi: sugeruje przerwę między żądaniami - część botów (np. Bingbot) respektuje; Googlebot ignoruje.
Ryzyko: zbyt duża wartość wydłuża crawlowanie i opóźnia odświeżanie treści.
User-agent: Bingbot
Crawl-delay: 5
User-agent: Yandex
Crawl-delay: 10
Wzorce * i $, komentarze #
Co robi: * działa jako wildcard, a $ oznacza koniec dopasowania. # wprowadza komentarz.
# blokuj tylko pliki PNG (dokładnie końcówka)
User-agent: Googlebot-Image
Disallow: /*.png$
# blokuj wszystko w katalogach tymczasowych
User-agent: *
Disallow: /tmp/
Disallow: /cache-*/
# ignoruj komentarze
# To jest komentarz i nie wpływa na dopasowanie
Umiejscowienie i serwowanie robots.txt
Plik musi być dostępny pod /robots.txt w katalogu głównym hosta. HTTPS to standard; www i bez www traktuj jak osobne hosty (każdy ma swój robots.txt). Subdomena (np. blog.example.com) również potrzebuje własnego pliku. Statusy HTTP mają znaczenie: 200 - plik istnieje i obowiązuje; 404 - brak pliku (bot zwykle przyjmuje „brak ograniczeń”); 403 - zabronione (część botów zakłada „wszystko zabronione”). Pamiętaj o nagłówkach HTTP (np. prawidłowe kodowanie).
Reguły dla popularnych botów (praktyczne mini-bloczki)
Googlebot / Googlebot-Image / AdsBot-Google - nie blokuj zasobów krytycznych dla renderowania: JavaScript i CSS.
User-agent: Googlebot
Allow: /assets/js/
Allow: /assets/css/
Disallow: /kopia-robocza/
User-agent: Googlebot-Image
Allow: /media/
Disallow: /media/prywatne/
User-agent: AdsBot-Google
Allow: /
Bingbot - podobne zalecenia; ew. Crawl-delay:
User-agent: Bingbot
Allow: /assets/
Disallow: /kopia-robocza/
Crawl-delay: 5
Robots.txt - dobre praktyki vs. ryzyka
- Nie używaj robots.txt do usuwania z indeksu. Zamiast tego: meta robots noindex, X-Robots-Tag w nagłówkach lub kontrola autoryzacją (np. basic auth) albo statusy 404/410.
- Nie blokuj JS/CSS potrzebnych do renderowania. Google ocenia stronę tak, jak ją „zobaczy”.
- Uważaj na zbyt szerokie wzorce. Disallow: /search ≠ Disallow: /search? — to różne kryteria.
- Środowiska testowe zabezpieczaj hasłem, zamiast zostawiać globalne Disallow: / w produkcji.
Typowe wzorce i gotowce
E-commerce: parametry filtrów, koszyk/checkout
Zastosowanie: mniejszy szum w indeksie, lepsza alokacja crawl budgetu.
User-agent: *
# Filtry i paginacja — ogranicz szum crawla
Disallow: /*?sort=
Disallow: /*?filter=
Disallow: /*?page=
# Sekcje transakcyjne
Disallow: /koszyk/
Disallow: /checkout/
CMS (WordPress): blok wp-admin z dopuszczeniem AJAX
Zastosowanie w WordPresie: panel poza crawllem, ale mechanizmy AJAX (np. wyszukiwarka, lazy) działają.
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Relacja robots.txt ↔ sitemap.xml
W robots.txt podawaj Sitemap.xml, szczególnie gdy masz wiele sekcji lub subdomen. Dbaj o kanoniczność i spójność lokalizacji URL - mapa powinna wskazywać kanoniczne adresy tej samej domeny/hosta. W środowiskach wielodomenowych rozdzielaj mapy per host.
Testowanie i monitorowanie pliku robots.txt
Jak weryfikować, czy reguły działają?
- Narzędzia webmastera (np. „tester robots.txt”).
- Logi serwera (User-agent, ścieżka, status HTTP).
- curl -I https://domena.pl/robots.txt i selektywne testy URL.
- Monitoruj crawl budget i anomalie w częstotliwości wejść.
Najczęstsze błędy - checklista
- Używanie robots.txt do „noindex” → zastosuj meta robots lub X-Robots-Tag.
- Globalne Disallow: / lub zbyt szerokie wzorce.
- Blokowanie JS/CSS koniecznych do renderowania.
- Zostawienie Disallow: / po migracji ze stagingu.
- Błędne wieloznaczniki (*, $) prowadzące do niespodziewanych dopasowań.
Parę osobistych uwag na koniec
Dobrze napisany robots.txt jest jak ruch uliczny z mądrymi znakami - nie zamykasz autostrady, tylko kierujesz strumień tam, gdzie ma sens. Oto dlaczego zawsze sprawdzam logi i realne ścieżki wejść botów podczas analizy SEO. Znam ten ból, gdy przez jeden zbyt szeroki Disallow znika pół bloga z crawla. Dlatego proponuję działać ostrożnie, testować i wersjonować. Jeśli chcesz, mogę przejrzeć Twój plik i przygotować bezpieczną konfigurację pod Twój sklep czy blog - technicznie i „po ludzku”.
Źródła i materiały
- https://developers.google.com/search/docs/crawling-indexing/robots/intro?hl=pl
- https://developers.google.com/crawling/docs/robots-txt/robots-txt-spec
- https://developers.google.com/crawling/docs/robots-txt/create-robots-txt
- https://www.semstorm.com/pl/blog/seo-and-ppc/plik-robotstxt-co-jest-i-jak-tego-uzywac
