Robots.txt – jak zarządzać dostępem robotów do strony

Plik robots.txt to prosty plik tekstowy w głównym katalogu strony (domena.pl/robots.txt), w którym właściciel strony informuje roboty, które części serwisu mogą skanować, a których nie. Przestrzegają go roboty wyszukiwarek i większość uczciwych botów. Poniżej wyjaśniam, jak go tworzyć, i pokazuję przykłady.

Jak zarządzać dostępem robotów do strony

Do czego służy robots.txt

  • **ograniczanie skanowania** sekcji bez wartości dla wyszukiwarki: wyników wyszukiwania wewnętrznego, koszyka, panelu administracyjnego, nieskończonych kombinacji filtrów,
  • **oszczędzanie zasobów serwera** przy dużych serwisach,
  • **wskazanie mapy witryny**,
  • **decydowanie o dostępie botów AI**, które zbierają treści do trenowania modeli.

Ważne: robots.txt **nie służy do ukrywania stron z wyników wyszukiwania**. Zablokowana strona może pojawić się w Google bez opisu, jeśli prowadzą do niej linki. Do wykluczenia z indeksu służy znacznik noindex – a robot musi mieć dostęp do strony, żeby go zobaczyć. Plik jest też publiczny, więc nie wpisuj w nim adresów, które mają pozostać tajne.

Składnia pliku robots.txt

  • **User-agent** – do którego robota odnosi się grupa reguł (* oznacza wszystkie),
  • **Disallow** – ścieżka, której robot nie powinien skanować,
  • **Allow** – wyjątek od zakazu,
  • **Sitemap** – pełny adres mapy witryny,
  • znaki specjalne: * (dowolny ciąg znaków) i $ (koniec adresu).

Gdy reguły Allow i Disallow się zazębiają, Google stosuje regułę bardziej szczegółową (dłuższą), a przy remisie – mniej restrykcyjną, czyli Allow.

Przykłady zastosowania pliku robots.txt

Pełny dostęp dla wszystkich robotów z mapą witryny:

User-agent: *
Disallow:

Sitemap: https://domena.pl/sitemap_index.xml

Typowa konfiguracja WordPressa:

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /?s=

Sitemap: https://domena.pl/sitemap_index.xml

Blokada wszystkiego z wyjątkiem jednej sekcji – tak czyta się zapis z pytania „co znaczy User-agent: * Disallow: / Allow: /index”:

User-agent: *
Disallow: /
Allow: /index

Roboty nie skanują niczego oprócz adresów zaczynających się od /index. Taki zapis bywa stosowany na stronach testowych, ale łatwo nim przypadkiem zablokować cały serwis.

Wykluczenie botów zbierających treści dla AI przy zachowaniu dostępu dla wyszukiwarek:

User-agent: GPTBot
Disallow: /

User-agent: Google-Extended
Disallow: /

User-agent: *
Disallow:

Google-Extended decyduje o wykorzystaniu treści do trenowania modeli Gemini i nie wpływa na obecność strony w wyszukiwarce Google. Decyzja o blokowaniu botów AI to wybór między ochroną treści a widocznością w narzędziach AI.

Crawl-delay

Dyrektywa Crawl-delay (opóźnienie między żądaniami) jest obsługiwana m.in. przez Binga, ale Google ją ignoruje. Jeśli Googlebot nadmiernie obciąża serwer, rozwiązaniem jest wydajniejszy serwer lub – tymczasowo – odpowiedzi 503 lub 429.

Narzędzia do testowania i monitorowania

  • **raport robots.txt w Google Search Console** (Ustawienia) – pokazuje, kiedy Google ostatnio pobrał plik i czy zawiera błędy,
  • **sprawdzanie adresu URL** w Search Console – informuje, czy strona jest zablokowana przez robots.txt,
  • **Bing Webmaster Tools** – własny tester pliku,
  • **crawler**, np. Screaming Frog – pozwala sprawdzić, które adresy blokują nowe reguły, zanim je opublikujesz.

Najlepsze praktyki i najczęstsze błędy

  • plik musi być w głównym katalogu i nazywać się dokładnie robots.txt (małymi literami),
  • każda subdomena ma własny plik,
  • nie blokuj plików CSS i JavaScript – Google potrzebuje ich do wyrenderowania strony,
  • nie blokuj stron, które chcesz usunąć z indeksu znacznikiem noindex,
  • po przeniesieniu strony z wersji testowej sprawdź, czy nie został zapis „Disallow: /”,
  • uważaj na wielkość liter w ścieżkach – reguły ją rozróżniają,
  • Google przetwarza plik do 500 KiB – w praktyce dużo więcej, niż potrzeba.

Więcej o tym, jak roboty Google odwiedzają strony, w tekście o Googlebocie i o web crawlerach.

Share your love

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *