Wasz wybór

Powiązane artykuły

Robots.txt — jak poprawnie skonfigurować plik dla SEO?

Każda strona internetowa prowadzi cichy dialog z robotami wyszukiwarek. Zanim Googlebot wyświetli choćby jeden wynik, sprawdza niewielki plik tekstowy w katalogu głównym domeny — robots.txt. Ten kilkulinijkowy dokument decyduje, które zasoby crawler może indeksować, a które powinien ominąć. Błędna konfiguracja robots potrafi w ciągu kilku godzin usunąć setki podstron z wyników wyszukiwania. Z kolei przemyślana struktura dyrektyw pomaga crawlerom efektywniej wykorzystywać budżet indeksowania i docierać do treści, na których naprawdę zależy właścicielowi witryny. Przy audytach spotykamy się z plikami, które albo blokują za dużo, albo nie blokują niczego — oba skrajne podejścia generują problemy. Poniżej omawiamy mechanikę działania, składnię, najczęstsze błędy i sprawdzone wzorce konfiguracji.

Czym jest plik robots.txt i jak go interpretują wyszukiwarki

Robots.txt to zwykły plik tekstowy umieszczony pod adresem domena.pl/robots.txt. Roboty wyszukiwarek — Googlebot, Bingbot, YandexBot i inne — pobierają go jako pierwszy krok przed crawlowaniem witryny. Plik nie wymaga żadnego specjalnego serwera ani interpretera: to czysty tekst z dyrektywami zgodnymi ze standardem Robots Exclusion Protocol z 1994 roku, zaktualizowanym przez Google w 2019 roku jako RFC 9309.

Kolejność pobierania i cachowanie pliku przez crawlery

Crawler wysyła żądanie HTTP GET na adres /robots.txt przed rozpoczęciem indeksowania jakiejkolwiek podstrony. Jeśli serwer zwraca kod 200, robot parsuje dyrektywy i stosuje je do kolejnych żądań. Przy kodzie 404 (plik nie istnieje) crawler zakłada pełen dostęp do wszystkich zasobów. Przy kodach 5xx (błąd serwera) Googlebot wstrzymuje crawlowanie — traktuje brak odpowiedzi jako potencjalną blokadę, co może na kilka godzin zatrzymać indeksowanie całej domeny.

Google cachuje zawartość robots.txt na około 24 godziny. Oznacza to, że po wprowadzeniu zmian efekt nie jest natychmiastowy — przy dużych witrynach opóźnienie sięga czasem 48 godzin. Z naszego doświadczenia wynika, że wymuszenie ponownego pobrania przez Google Search Console (funkcja „Testuj plik robots.txt") skraca ten czas do kilku minut.

Różnica między robots.txt a meta robots i nagłówkiem X-Robots-Tag

Robots.txt kontroluje dostęp crawlerów — mówi „nie wchodź tutaj". Natomiast meta robots (tag w HTML) i nagłówek X-Robots-Tag kontrolują indeksowanie — mówią „wszedłeś, ale nie dodawaj tego do indeksu". Plik robots nie gwarantuje usunięcia strony z wyników Google, bo jeśli inna witryna linkuje do zablokowanego URL-a, wyszukiwarka może wyświetlić go w wynikach (bez snippetu, ale z adresem). Dopiero kombinacja robots.txt z odpowiednimi dyrektywami noindex daje pełną kontrolę — choć tu pojawia się paradoks: jeśli zablokujesz crawlowanie, robot nie przeczyta tagu noindex. Dlatego przy stronach wymagających usunięcia z indeksu lepiej stosować noindex bez blokady w robots.txt.

Składnia dyrektyw — User-agent, Disallow i Allow w praktyce

Plik robots.txt składa się z bloków dyrektyw. Każdy blok zaczyna się od User-agent, po którym następują reguły Disallow i Allow. Składnia jest prosta, ale nieintuicyjna w kilku miejscach — i właśnie tam pojawiają się błędy.

Podstawowa struktura wygląda tak:

  • User-agent: * — dotyczy wszystkich crawlerów; można zastąpić gwiazdkę nazwą konkretnego bota (np. Googlebot, Bingbot)
  • Disallow: /katalog/ — blokuje crawlowanie całego katalogu i wszystkich zasobów wewnątrz
  • Allow: /katalog/wyjątek.html — nadpisuje blokadę dla konkretnego URL-a
  • Sitemap: https://domena.pl/sitemap.xml — wskazuje lokalizację mapy witryny (opcjonalne, ale zalecane)
  • Ważny niuans dotyczy ukośnika na końcu ścieżki. Dyrektywa Disallow: /admin blokuje zarówno /admin/, jak i /administrator/ czy /admin-panel/, bo dopasowanie działa na zasadzie prefiksu. Natomiast Disallow: /admin/ blokuje tylko adresy zaczynające się od /admin/. Przy witrynach z wieloma katalogami o podobnych nazwach ta różnica jednego znaku potrafi zablokować lub odblokować dziesiątki podstron.

    Google obsługuje też wzorce z symbolami wieloznacznymi: * zastępuje dowolny ciąg znaków, a $ oznacza koniec URL-a. Przykładowo Disallow: /*.pdf$ blokuje wszystkie pliki PDF na stronie, nie wpływając na inne zasoby.

    Blokowanie crawlerów — co ukrywać przed robotami, a czego nie ruszać

    Decyzja o tym, co zablokować w robots.txt, powinna wynikać z analizy budżetu crawlowania i struktury witryny, nie z domysłów. Blokowanie niewłaściwych zasobów potrafi obniżyć widoczność w wyszukiwarkach, a zbyt liberalne podejście marnuje budżet crawlowania na strony bez wartości SEO.

    ZasóbBlokować?Uzasadnienie
    Panel administracyjny (/wp-admin/, /admin/)TakBrak wartości SEO, wrażliwe dane
    Wyniki wyszukiwania wewnętrznego (/search/, /?s=)TakDuplikaty treści, nieskończona liczba kombinacji
    Strony filtrowania i sortowaniaTak (z wyjątkami)Generują tysiące thin content URL-i
    Koszyk i proces zamówienia (/cart/, /checkout/)TakBrak wartości SEO, dane sesyjne
    Pliki CSS i JavaScriptNieGooglebot wymaga ich do renderowania strony
    Obrazy (/wp-content/uploads/)Nie (zwykle)Indeksowane w Google Images, generują ruch
    Strony kategorii i tagów (blog)ZależyBlokuj tylko jeśli generują duplikaty

    Przy sklepach internetowych z tysiącami wariantów filtrowania (kolor + rozmiar + cena + marka) robots.txt staje się narzędziem do odcięcia kombinatorycznej eksplozji URL-i. Witryna z 500 produktami i 10 filtrami może teoretycznie wygenerować setki tysięcy unikalnych adresów — większość z nich to thin content bez wartości dla użytkownika. Blokowanie parametrów filtrów dyrektywą Disallow: /*?filtr= ratuje budżet crawlowania.

    Jednocześnie ostrożność obowiązuje przy blokadzie zasobów renderujących. W 2014 roku Google oficjalnie ostrzegło, że blokowanie CSS i JS w robots.txt utrudnia ocenę strony i może negatywnie wpłynąć na pozycje. Od tamtej pory konsekwentnie powtarzają: pozwólcie Googlebotowi renderować stronę tak, jak widzi ją użytkownik.

    Typowe błędy konfiguracji robots.txt i ich konsekwencje SEO

    Audytując witryny, regularnie trafiamy na te same kategorie błędów — od literówek po fundamentalne nieporozumienia dotyczące działania dyrektyw. Oto problemy, które napotykamy najczęściej.

    Pusta dyrektywa Disallow i przypadkowa blokada całej witryny

    Dyrektywa Disallow: / (z ukośnikiem) blokuje całą witrynę. Dyrektywa Disallow: (bez wartości) nie blokuje niczego — jest równoważna brakowi dyrektywy. Pomyłka między tymi dwoma wariantami zdarza się zaskakująco często. Na jednej z analizowanych witryn e-commerce ktoś dodał Disallow: / pod User-agent: * „tymczasowo" podczas przebudowy — i zapomniał usunąć przez trzy tygodnie. Witryna straciła 94% ruchu organicznego. Odzyskanie pozycji po odblokowaniu zajęło ponad dwa miesiące.

    Konflikt między robots.txt a canonical i noindex

    Kolejny częsty błąd to blokowanie URL-i, na których ustawiono tag canonical lub noindex. Jeśli robot nie ma dostępu do strony, nie przeczyta żadnej dyrektywy w kodzie HTML — ani canonical, ani noindex. Strona pozostaje w indeksie jako „znana, ale niezaindeksowana", a Google może ją wyświetlać na podstawie anchor textów z linków zewnętrznych. Rozwiązanie? Jeśli celem jest usunięcie z indeksu — stosuj noindex bez blokady w robots.txt. Jeśli celem jest oszczędność budżetu crawlowania przy stronach już nieindeksowanych — wtedy blokada w robots ma sens.

    Dodatkowy problem pojawia się przy migracjach. Nowy robots.txt wgrany na serwer stagingowy (z Disallow: / blokującym indeksowanie środowiska testowego) trafia na produkcję razem z resztą kodu. Takie sytuacje zdarzają się co najmniej raz na kilkadziesiąt audytów i potrafią pozostać niezauważone przez dni, zanim ktoś sprawdzi Google Search Console.

    Wzorcowa konfiguracja robots.txt — szablony dla różnych typów witryn

    Nie istnieje jeden uniwersalny plik robots.txt — konfiguracja zależy od CMS-a, typu witryny i strategii SEO. Przedstawiamy trzy wzorce, które sprawdzają się w praktyce.

    Dla typowego bloga na WordPressie sprawdza się minimalistyczne podejście: blokada panelu administracyjnego i wewnętrznej wyszukiwarki, otwarcie reszty. Dyrektywy Disallow: /wp-admin/ i Allow: /wp-admin/admin-ajax.php (potrzebny do działania wielu wtyczek) plus Disallow: /?s= dla wyników wyszukiwania. Reszta pozostaje otwarta, a na końcu pliku dodajemy dyrektywę Sitemap.

    Sklepy internetowe wymagają rozbudowanej konfiguracji. Blokada filtrów (Disallow: /*?filtr), koszyka (Disallow: /cart/), konta użytkownika (Disallow: /my-account/) i stron sortowania (Disallow: /*?orderby=). Strony kategorii i produktów pozostają otwarte — to rdzeń widoczności organicznej.

    Serwisy wielojęzyczne powinny unikać blokowania alternatywnych wersji językowych. Każda wersja językowa generuje ruch z odpowiedniego rynku i potrzebuje indeksowania. Blokowanie np. /en/ lub /de/ to rezygnacja z ruchu międzynarodowego.

    Niezależnie od typu witryny, po każdej zmianie warto zweryfikować plik w Google Search Console (Tester pliku robots.txt) oraz monitorować raport pokrycia indeksowania przez kolejne 7-14 dni. Wszelkie anomalie w liczbie zaindeksowanych stron sygnalizują problem z konfiguracją. Regularna weryfikacja — choćby raz na kwartał — pozwala wyłapać regresje wprowadzone przez aktualizacje CMS-a, wtyczek czy zmiany w infrastrukturze serwerowej, zanim wpłyną na widoczność organiczną.

    Miłosz Fryzel
    Miłosz Fryzel
    Senior SEO Specialist Miłosz swobodnie porusza się po wszystkich obszarach pozycjonowania — od technicznego SEO, przez content, po link building. Jego analityczne podejście sprawia, że nawet drobne optymalizacje przekładają się na wymierne efekty widoczności.
    Popularne