robots.txt
ważność wysokamierzonysposób robots
Czy /robots.txt jest dostępny i nie blokuje całego serwisu. Zablokowanie całości to częsty błąd po migracji.
WIKI
artykuł z 16.09.2026 · źródeł 8robots.txt to parametr monitoringu stron internetowych, który sprawdza dwie rzeczy: czy plik /robots.txt jest dostępny i czy zapisane w nim reguły nie zamykają robotom wyszukiwarek dostępu do całego serwisu. Plik realizuje protokół Robots Exclusion Protocol, którym właściciel usługi określa, czy i w jaki sposób automatyczni klienci, czyli roboty indeksujące (ang. crawlers), mogą sięgać po jej treść. Reguły muszą leżeć w pliku o nazwie /robots.txt, zapisanej małymi literami, w ścieżce najwyższego poziomu usługi [1].
Jak działa
Plik składa się z grup. Grupa to jeden lub więcej wierszy User-agent, po których następuje jedna lub więcej reguł; grupę kończy kolejny wiersz User-agent albo koniec pliku [1]. Robot szuka grupy pasującej do własnej nazwy bez rozróżniania wielkości liter i stosuje jej reguły. Jeśli pasuje kilka grup, ich reguły łączy się w jedną. Grupa User-agent: * obowiązuje tylko wtedy, gdy żadna grupa nie pasuje do nazwy robota, a gdy nie ma ani pasującej grupy, ani grupy z gwiazdką, żadne reguły nie obowiązują [1].
Reguły Allow i Disallow porównuje się ze ścieżką adresu od jej pierwszego znaku. Rozstrzyga najbardziej szczegółowe dopasowanie, czyli najdłuższe w oktetach; przy równoważnych regułach Allow i Disallow pierwszeństwo powinna mieć Allow [1]. Adres, do którego nie pasuje żadna reguła, jest dozwolony, a sam plik /robots.txt jest dozwolony zawsze [1]. Google stosuje tę samą zasadę długości ścieżki, a przy sprzecznych regułach, także z symbolami wieloznacznymi, wybiera regułę najmniej restrykcyjną [2].
Wynik pobrania decyduje o tym, co robot zrobi dalej. Po udanym pobraniu musi stosować reguły, które da się sparsować. Przekierowania powinien śledzić co najmniej przez pięć kolejnych kroków [1]. Odpowiedź z zakresu 400–499 oznacza plik niedostępny i robot może wtedy pobierać dowolne zasoby serwera. Błąd serwera z zakresu 500–599 albo błąd sieci oznacza plik nieosiągalny i robot musi przyjąć pełny zakaz [1]. Wersji z pamięci podręcznej nie powinien używać dłużej niż 24 godziny, chyba że plik jest nieosiągalny [1].
Standardy i specyfikacje
- RFC 9309 formalizuje protokół opisany pierwotnie przez Martijna Kostera w 1994 roku: grupy, pierwszeństwo reguł, obsługę kodów odpowiedzi i pamięć podręczną [1]. Robot musi sparsować co najmniej 500 KiB pliku [1].
- Interpretacja Google doprecyzowuje zachowanie jednego wyszukiwarkowego robota. Wszystkie błędy 4xx poza 429 Google traktuje tak, jakby pliku nie było, czyli bez ograniczeń. Po pięciu przekierowaniach uznaje plik za 404. Błędy DNS i sieci traktuje jak błąd serwera [2]. Treść powyżej 500 KiB jest ignorowana, a plik zwykle trzymany w pamięci podręcznej do 24 godzin [2]. Reguły dotyczą wyłącznie hosta, protokołu i portu, pod którymi plik jest opublikowany. Dyrektyw
crawl-delayinoindexw tym pliku Google nie obsługuje [2]. - WordPress generuje domyślną treść funkcją
do_robots(): grupęUser-agent: *z zakazem ścieżki panelu administracyjnego i zezwoleniem naadmin-ajax.php[4]. Treść można zmienić filtremrobots_txt, który dostaje wynik i informację, czy witryna jest publiczna [5]. Od wersji 5.3 funkcja nie dopisujeDisallow: /, gdy włączono zniechęcanie wyszukiwarek do indeksowania; zamiast tego służy znacznik meta robots [4]. Odpowiada za niego funkcjawp_robots_no_robots(), która dodajenoindex, a dla witryny niepublicznej takżenofollow[6]. Plik jest wirtualny: WordPress generuje go tylko wtedy, gdy w katalogu głównym nie ma fizycznego pliku [7].
Zagrożenia i skutki
Zakaz całego serwisu. Reguła Disallow: / w grupie User-agent: * pasuje do każdej ścieżki, więc dla robotów bez własnej grupy zamyka cały serwis [1]. Fizyczny plik ma pierwszeństwo przed wersją generowaną przez WordPress [7], więc plik z zakazem, przeniesiony razem z innymi plikami witryny, działa dalej niezależnie od ustawień widoczności w panelu.
Błąd serwera zamiast pliku. Odpowiedź 5xx dla /robots.txt jest dla robota pełnym zakazem, nawet gdy reszta strony działa [1]. Google przez pierwsze 12 godzin wstrzymuje indeksowanie witryny i ponawia pobranie pliku, przez kolejne 30 dni korzysta z ostatniej dobrej wersji, a gdy jej nie ma, przyjmuje brak ograniczeń [2]. Po 30 dniach, jeśli witryna jest ogólnie dostępna, zachowuje się tak, jakby pliku nie było [2].
Brak pliku. Odpowiedź 404 nie blokuje indeksowania: robot może pobierać wszystkie zasoby [1] [2]. Skutkiem jest brak kontroli nad ruchem robotów, a nie wypadnięcie z wyszukiwarki.
Mylenie blokady z ukryciem. Plik służy głównie do zarządzania ruchem robotów i nie jest mechanizmem usuwania strony z Google. Strona zablokowana w robots.txt może trafić do indeksu, jeśli prowadzą do niej linki z innych witryn; wtedy adres pojawia się w wynikach bez opisu [3]. Do wykluczenia strony z wyników Google wskazuje noindex albo ochronę hasłem [3].
Plik nie jest zabezpieczeniem. Protokół nie zastępuje zabezpieczeń treści, a ścieżki wpisane do pliku stają się publiczne i łatwe do odkrycia [1]. Reguły nie są formą autoryzacji dostępu [1]. Roboty mogą celowo ignorować dyrektywy Disallow, więc pliku nie należy traktować jako mechanizmu ograniczającego dostęp do treści i jej dalsze wykorzystanie [8]. Nie wszystkie wyszukiwarki stosują się do reguł, a różne roboty mogą różnie interpretować składnię [3].
Przykłady
| Plik albo odpowiedź | Skutek dla robota | Uwagi |
|---|---|---|
User-agent: * + Disallow: / | cały serwis zakazany [1] | dotyczy robotów bez własnej grupy [1] |
User-agent: AhrefsBot + Disallow: /, osobno User-agent: * bez zakazu | zakaz tylko dla wskazanego robota [1] | pozostałe roboty stosują grupę z gwiazdką [1] |
Disallow: / i Allow: / w tej samej grupie | adresy dozwolone [1] | remis rozstrzyga reguła Allow [1] [2] |
| domyślny plik WordPressa | zakaz tylko ścieżki panelu [4] | generowany, gdy nie ma fizycznego pliku [7] |
| odpowiedź 404 | brak ograniczeń [1] | Google: jakby pliku nie było [2] |
| odpowiedź 503 lub błąd sieci | pełny zakaz [1] | Google: 12 h wstrzymania, potem ostatnia dobra wersja [2] |
Disallow: /panel-tajny/ | zakaz dla posłusznych robotów | ścieżka staje się publicznie znana [1] [8] |
- [1] RFC 9309 — Robots Exclusion Protocol · IETF
- [2] How Google interprets the robots.txt specification · Google Search Central
- [3] Introduction to robots.txt · Google Search Central
- [4] do_robots() — Function · WordPress Developer Resources
- [5] robots_txt — Hook · WordPress Developer Resources
- [6] wp_robots_no_robots() — Function · WordPress Developer Resources
- [7] The robots.txt file in Yoast SEO · Yoast
- [8] WSTG-INFO-03 — Review Webserver Metafiles for Information Leakage · OWASP
STATS
wyniki z systemu · tylko liczby zbiorczeTen parametr nie zapisuje odczytu per strona — przebieg zostawia tylko ustalenia, więc liczby sprawdzonych stron i wyników „ok” system nie ma. Pojawią się po wdrożeniu zapisu przebiegów per strona per parametr.
Ten parametr nie otworzył jeszcze żadnego ustalenia w bazie LAB247. Pusto nie znaczy „czysto” — znaczy, że nic nie przekroczyło reguły.
- Przebiegów
- 33sposób robots
- W 30 dni
- 0przebiegów
- Ostatni
- 19.09.2026start przebiegu
- Stron w przebiegach
- —33 przebiegów bez liczby stron
CARD
karta z kodu CREATO_PING, odczyt 22.09.2026Jak ten parametr trafia do ClickUpa: wynik sondy to linia w subtasku 2. Pomiar, a usterka, którą otwiera — linia w subtasku 1. Podsumowanie (z identyfikatorem CWE i kategorią OWASP), skąd liczy się wskaźnik zagrożenia i status strony. Projekcja z bazy skanera odświeża oba subtaski co godzinę. Do 22.09 każde ustalenie dostawało własny subtask i status ze starego słownika (PODATNA, WARNING…) — te słowa zostały jeszcze w części opisów pomiaru niżej jako język wewnętrzny sond.
| Obszar i ważność | SEO · wysoka (S05) |
|---|---|
| Workflow i częstotliwość | creato_ping_security_v2 · P3 działa na LAB247Skaner 2.0, rytm „p3” / „bezpieczenstwo”: premium co 6 h, reszta co 24 h (tier 1–3), co 9 dni (tier 4) · Dokładny skan. dns_integrity porównuje NS, MX, SPF i DMARC z wzorcem z poprzedniego przebiegu. |
| Sonda i helper | sposób robots · CREATO_PING/helpers/robots_check.py |
| Testy |
|
| Typ wyniku | 0 albo 1 ustalenie: robots_block_all albo robots_missing |
| Jednostka | brak — wynik jakościowy; w dowodzie adres pliku |
| Próg i reguła | Timeout 5,0 s, połączenie 2,0 s (stałe w helperze). |
| Gdzie leżą pokrętła | CREATO_PING/helpers/robots_check.py → _UA_BLOCK_RE, _TIMEOUTCREATO_PING/helpers/security_runner.py → do_writera (bramka gate z polityki; sito powagi zniknęło 18.09)CREATO_PING/config/incident_policy.toml → [finding] robots_block_all, robots_missing |
| Retencja odczytów | Surowy pomiar jako NIEZMIENNY wiersz tabeli `odczyty` w bazie skanera (wejście, wyjście, dowody, sha karty sondy i helpera, commit kodu) — trigger odrzuca każdą zmianę. Okno retencji z kohorty: 90 dni premium, 30 dni reszta; poza oknem zostają odczyty z werdyktem problemu, akcją albo etykietą, bo replay reguł ich potrzebuje (`skaner/retencja.py`). Do LAB247 ten kanał nie idzie (do bazy serwisu jadą dziś tylko sprawdzenia dostępności), więc poza odczytem zostaje werdykt w tabeli `werdykty` i sprawa w tabeli `sprawy`. |
| Znane rozbieżności |
|
| Karta przepisana z | CREATO_PING/helpers/robots_check.py · CREATO_PING/helpers/security_runner.py · CREATO_PING/config/incident_policy.toml · CREATO_PING/skaner/adapter_clickup.py · CREATO_PING/skaner/sprawy.py · CREATO_PING/skaner/usterki.toml · CREATO_PING/skaner/ocena.py · odczyt 22.09.2026 |
robots_block_all: bramka polityki otwarta (gate=true) → sprawa w skanerze → robots.txt blokuje całą stronę — waga 2 → ocena 3–4 (niebieski), status strony „niski”, dopóki sprawa jest otwarta. robots_missing: bramka polityki zamknięta (gate=false) — zostaje odczyt i werdykt „bez_subtaska” w bazie skanera, sprawa nie powstaje, więc usterka „Brak pliku robots.txt” (waga 1) nie wchodzi do wskaźnika strony. Helper nie wysyła sygnału zamknięcia.
| Kod | Finding | Severity | Pewność | Skutek | Finding / alarm | Waga → ocena | Co zrobić |
|---|---|---|---|---|---|---|---|
| S05.01 | robots.txt blokuje całośćrobots_block_all | Wysoka | Ewidentne | usterka niekrytyczna | tak / tak | waga 2 → ocena 3–4 (niebieski) | Popraw robots.txt. |
| S05.02 | Brak robots.txtrobots_missing | Niska | Ewidentne | bez wpływu | nie / nie | waga 1 → ocena 2 (zielony) | Dodaj podstawowy robots.txt. |
| Kod i klucz | S05.01 · robots_block_all · w tabeli typów |
|---|---|
| Co znaczy | Disallow: / blokuje indeksowanie całego serwisu. |
| Kiedy powstaje | GET /robots.txt zwraca 200, a według robots_blocks_all grupa Googlebota (lub *) ma Disallow: / i nie ma Allow: /. |
| Severity · pewność | Wysoka · Ewidentne |
| Skutek dla strony | usterka niekrytyczna · zakłada Finding · alarm tak |
| Waga → ocena | waga 2 → ocena 3–4 (niebieski) |
| Klasyfikacja | OCSF 1.9.0: poza klasami Findingu |
| Rekord OCSF | finding_info.analytic.uid = "S05.01" · analytic.name = "robots_block_all" · finding_info.types = ["S05 robots.txt"] |
| Co zrobić | Popraw robots.txt. |
| Wersje typu |
|
| Kod i klucz | S05.02 · robots_missing · w tabeli typów |
|---|---|
| Co znaczy | Brak pliku robots.txt — drobne. |
| Kiedy powstaje | GET /robots.txt (z przekierowaniami) zwraca dokładnie 404. Inne kody i błędy sieci nie dają findingu. |
| Severity · pewność | Niska · Ewidentne |
| Skutek dla strony | bez wpływu · tylko statystyka (gate=false) · alarm nie |
| Waga → ocena | waga 1 → ocena 2 (zielony) |
| Klasyfikacja | OCSF 1.9.0: poza klasami Findingu |
| Rekord OCSF | finding_info.analytic.uid = "S05.02" · analytic.name = "robots_missing" · finding_info.types = ["S05 robots.txt"] |
| Co zrobić | Dodaj podstawowy robots.txt. |
| Wersje typu |
|
LOOP
bez pętliTrafności jeszcze nie liczymy: zamknięcie subtaska nie niesie dziś werdyktu (prawdziwy / fałszywy / nie dało się sprawdzić). Cztery liczby pojawią się, gdy każde zamknięcie dostanie werdykt — to warunek startu pętli 1.
Ten parametr nie przeszedł jeszcze żadnej pętli. Kolejność po pierwszych pięciu grupach ustali miara trafności.