Robots.txt – do czego służy i jakich błędów unikać przy jego tworzeniu?
(13 min czytania)
Czym jest robots.txt?
Plik robots.txt przekazuje robotom wyszukiwarek oraz programom crawlującym wytyczne, które strony i pliki mogą odwiedzać. Dyrektywy wysyłane są za pomocą standardu Robots Exclusion Protocol, choć należy przy tym zaznaczyć, że część wyszukiwarek deklaruje uwzględnianie niestandardowych zapisów. Dzięki robots.txt blokujemy dostęp do stron nieistotnych z punktu widzenia SEO, choć możliwych zastosowań i korzyści wynikających z korzystania z tego pliku jest znacznie więcej.
Plik robots.txt znajduje się pod adresem: https://
Wpisz w wyszukiwarkę adres swojej domeny z dopiskiem “robots.txt”, aby sprawdzić, jakie wytyczne dla robotów są określone dla witryny. Jeśli twoja strona nie posiada pliku robots.txt, w dalszej części tego artykułu powiemy ci jak go przygotować.
Jakie roboty czytają plik robots.txt?
Plik robots.txt z założenia przeznaczony jest dla wszystkich automatów wchodzących na stronę. Dotyczy to nie tylko najbardziej oczywistych z punktu widzenia SEO robotów wyszukiwarek. Botami, do których adresowane są dyrektywy tego pliku, są także automaty archiwizujące Internet (takie jak Web Archive), programy pobierające witrynę na dysk lokalny (np. HTTrack Website Copier), narzędzia do analizy strony (w tym narzędzia SEO, takie jak chociażby Xenu, Majestic SEO i Ahrefs) itp.
Po co stosować plik robots.txt?
To podstawowe pytanie, jakie warto sobie zadać – zwłaszcza że z respektowaniem zapisów w pliku robots.txt bywa różnie. Odpowiedź jest prosta: zawsze lepsza jest niewielka kontrola nad robotami niż jej brak. A co można dzięki temu zyskać?
Przede wszystkim nie dopuszczamy botów do przeglądania tych sekcji serwisu, do których zaglądać z różnych przyczyn nie powinny, stron nieistotnych z punktu widzenia SEO, a wskazujemy te miejsca, których odwiedziny są jak najbardziej wskazane.
Blokada konkretnych obszarów strony może być istotna z różnych przyczyn:
- Kwestie bezpieczeństwa – być może po prostu nie chcesz, aby roboty (albo też przypadkowi użytkownicy korzystający później z zasobów zaindeksowanych przez roboty) mogły zbyt łatwo dostać się do sekcji, do których nie powinny mieć dostępu.
- Zabezpieczenie przed występowaniem duplicate content – jeżeli na stronie istnieje spora ilość wewnętrznie powielonej treści, za pomocą pliku robots.txt można dać wyszukiwarkom sygnał, że tej części witryny nie powinny śledzić.
- Oszczędność transferu – za pomocą zapisów robots.txt można zablokować dla robotówcałe podkatalogi, strony filtrowania, sortowania lub konkretne rodzaje plików – chociażby folder zawierający grafiki lub ich wysokoformatowe wersje. W przypadku niektórych serwisów oszczędność transferu może być znacząca.
- Zabezpieczenia contentu przed „wypłynięciem” na zewnątrz – zauważ, że zasugerowane powyżej zabezpieczenie folderu z grafikami w dużym formacie może posłużyć też i temu, aby w wyszukiwarce grafik prezentować jedynie mniejsze wersje. Może to mieć spore znaczenie w przypadku np. banków zdjęć (choć nie tylko).
- Optymalizacja crawl budgetu – choć wymieniamy go na końcu listy, zdecydowanie nie jest to rzecz błaha. Im większy serwis, tym większy nacisk należy kłaść na optymalizację ścieżek, po których wędrują boty indeksujące wyszukiwarek. Blokując w robots.txt nieistotne dla SEO obszary serwisu, po prostu zwiększasz prawdopodobieństwo, że roboty będą wędrowały tam, gdzie powinny.
Co zawiera plik robots.txt?
Przejdźmy teraz do tego, z czego składa się plik robots.txt. Z definicji powinien to być plik tekstowy umieszczony w głównym katalogu serwisu. Jego główne dyrektywy to user-agent, allow i disallow.
Podstawowe dyrektywy w robots.txt: user-agent, allow i disallow
- User-agent – definiuje roboty indeksujące, których będą dotyczyły dalsze polecenia. Obowiązuje do kolejnego polecenia User-agent. Gwiazdka * to symbol wszystkich botów. Do najpopularniejszych robotów Google zaliczamy Googlebot, Googlebot Video, Googlebot Images, czy Googlebot News.
- Disallow – odmowa dostępu do określonych adresów. Użycie Disallow: nie zezwala na dostęp botów wskazanych w User-agent.
- Allow – zezwala na dostęp do określonych adresów. Zazwyczaj jest używana w połączeniu z Disallow, gdzie po komendzie wykluczenia, możliwe jest doprecyzowanie miejsc, których indeksowanie jest dozwolone.
Warto przy tym pamiętać, że plik robots.txt obsługuje zmienną w postaci gwiazdki (*), która oznacza, że w tym miejscu może się pojawić dowolny ciąg znaków, nieograniczonej długości (również zerowej).
Ścieżki plików, których dotyczy dana komenda, powinny być zawsze określone. Ewentualny brak wypełnienia spowoduje zignorowanie pola.
Dyrektywa sitemap
Oprócz „zaproszeń” i sugerowania omijania katalogów, plik robots.txt może posłużyć także do wskazywania robotom umiejscowienia mapy strony. Służy do tego dyrektywa sitemap, po której umieszcza się pełną ścieżkę mapy. Przykładowa forma zapisu wygląda następująco:
Sitemap: http://www.domena.com/ mapastrony.xml
Oczywiście map można wskazać więcej, co może być przydatne w przypadku bardzo rozbudowanych witryn.
Informacje o innych, rzadziej spotykanych dyrektywach znajdziesz w dalszej części tekstu: Pozostałe dyrektywy robots.txt
Przykładowe zapisy pliku robots.txt
1. Ze względu na brak zadeklarowanej ścieżki w dyrektywie disallow, robots.txt nie blokuje żadnych robotów:
User-agent: * Disallow:
2. Zakazanie dostępu do katalogu /
User-agent: Ahrefsbot Disallow: /img/
3. Zgoda na odwiedzanie przez roboty całego serwisu wraz z folderem /
User-agent: * Allow: /img/ miniatury/ Disallow: / img/ Disallow: / panel/
Należy przy tym wszystkim dodać, że same dyrektywy mogą dotyczyć nie tylko całych katalogów, lecz również pojedynczych plików.
Jak stworzyć robots.txt?
Plik robots.txt jest łatwy do przygotowania. Do stworzenia najlepiej sprawdzi się najprostszy edytor tekstowy, który nie dodaje formatowania, jak np. Microsoft Word. Przed rozpoczęciem przygotowywania robots.txt dobrze jest wygenerować mapę witryny, aby umieścić do niej link na dole. Sam plik robots.txt można stworzyć na kilka sposobów:
- Ręcznie - jako plik w edytorze tekstowym (Notatnik, Notepad, TextEdit) zapisany z rozszerzeniem .txt.
- Automatycznie - za pomocą generatorów takich jak Ryte oraz SeoOptimer.
- Dynamicznie - jako podstrona bezpośrednio w systemie CMS.
Zaletą ostatniego rozwiązania jest automatyczne dodawanie reguł które mają być indeksowane do pliku robots.txt, kiedy aktualizujesz strony w swoim CMS.
Domena może zawierać wyłącznie jeden plik robots.txt. Plik powinien być umieszczony na serwerze w głównym katalogu strony. Dokument z wytycznymi robots.txt można przesłać za pomocą FTP lub innego narzędzia do zarządzania plikami na serwerze.
Wskazówki przy tworzeniu robots.txt.
- Każda dyrektywa powinna znajdować się osobnej linii
- Grupuj polecenia tak, żeby user-agent dla konkretnej grupy botów był użyty tylko raz, zbędne powtarzanie sekcji określającej User-agent
- Zachowaj przejrzystość pliku robots.txt, aby był zrozumiały zarówno dla botów, jak i dla człowieka, któremu przyjdzie jego przeglądnięcie i ewentualne uzupełnienie lub modyfikacja.
- Chcąc wykluczyć konkretną stronę z dostępu dla robotów, musisz podać jej pełną nazwę.
- Jeśli chcesz wykluczyć wszystkie zakończone określonym ciągiem (.img, .pdf) dodaj znak "$" na końcu reguły, np. Disallow: /
*.pdf$ - Zwróć uwagę na kolejność dyrektyw.
Problem z interpretacją dyrektyw allow i disallow, może zaistnieć na przykład wtedy, gdy chcesz zakazać robotom wstępu do jakiegoś katalogu, ale zrobić wyjątek dla konkretnego podkatalogu.
Pamiętaj, że dyrektywy dopuszczające powinny znaleźć się powyżej zakazujących – na przykład w ten sposób:
User-agent: * Allow: /Allow: / img/ miniatury/ Disallow: / img/ User-agent: Ahrefsbot Disallow: / User-agent: MJ12bot Disallow: /
W powyższym przykładzie od razu pokazaliśmy także przypadek, gdy dla niektórych botów zastosowano odrębne reguły – wówczas w ten sposób „prosimy” roboty serwisów Ahrefs i Majestic SEO, żeby nie wędrowały po stronie.
Testowanie robots.txt
Po przygotowaniu pliku warto sprawdzić, czy robots.txt nie zawiera błędów. Google Search Console zapewnia darmowe narzędzie do testowania, dostępne w Ustawieniach, w zakładce Indeksowanie, robots.txt.
Jeśli plik robots.txt zawiera błędy, wyświetli komunikat “Nie pobrano”. Błędy mogą być spowodowane przez nieprawidłową składnię lub logiczne błędy w regułach. Po ich naprawieniu lub wprowadzeniu ważnych zmiany poproś o ponowne przeskanowanie pliku robots.txt w GSC.
Do testowania robots.txt można wykorzystać również darmowe narzędzia dostępne w sieci, np. Merkle, SiteAnalyzer czy wspomniane wcześniej narzędzie do generowania pliku - Ryte.
Błędy w robots.txt i ich konsekwencje
Choć zawartość pliku robots.txt może posłużyć do „dogadania” się z robotami wyszukiwarek, równie dobrze może sprawić, że napytasz biedy swojej stronie. Jak? Wykluczając z wyszukiwania tę zawartość, która w indeksie powinna się pojawić. Efektem może być znaczna utrata widoczności w wynikach wyszukiwania. Zwłaszcza w przypadku rozbudowanych plików robots.txt, posiadających wiele wpisów do różnych podkatalogów, łatwo gdzieś po drodze popełnić błąd i wykluczyć zbyt wiele sekcji strony.
Drugi poważny błąd to objęcie dyrektywą disallow wszystkich obrazków, stylów CSS oraz plików JavaScript. Pozornie może się wydawać, że to dobre posunięcie, rzeczywistość jest jednak nieco inna z dwóch powodów. Po pierwsze, w wielu przypadkach warto znaleźć się w wynikach wyszukiwania grafik (choć oczywiście można tu zakazywać dostępu do np. wersji w większym formacie, o czym wspominaliśmy już wcześniej).
Drugi powód jest jednak bardziej istotny, a jest nim renderowanie strony przez Google Bota. Jeżeli nie dopuścisz bota do plików istotnych dla uzyskania końcowego wyglądu strony, wyrenderuje ją bez nich, co w niektórych przypadkach może sprawić, że z jego punktu widzenia będzie ona niepełna – a to może wpłynąć na ranking.
Czy blokada stron w robots.txt jest wystarczająca?
Niestety nie. Po pierwsze, roboty głównych wyszukiwarek nie zawsze respektują zakazy (nie wspominając już o tym, jak do nich podchodzi część narzędzi). Po drugie, nawet po odczytaniu zakazu Google może wejść na stronę i dodać ją do indeksu, uwzględniając jedynie jej tytuł (TITLE) i adres URL, a całość wzbogacając czasami informacją „W przypadku tej strony informacje nie są dostępne”. Choć roboty mogą faktycznie indeksować URL, nie mogą ani crawlować, ani indeksować zawartości strony.
Nadal jednak jest możliwe trafienie na zablokowaną stronę z poziomu wyszukiwarki, choć to raczej mało prawdopodobne. Gdy chcesz coś wyindeksować, zwróć uwagę, czy nie pociągnie to za sobą efektów ubocznych (patrz przykład z utrudnieniem renderowania strony przez Google Bota).
Meta robots i inne zabezpieczenia przed botami
Jeżeli zależy ci na wyłączeniu konkretnych fragmentów strony z indeksów wyszukiwarek, zawsze możesz dodatkowo wspomóc się znacznikiem meta robots umieszczonym w sekcji <HEAD> poszczególnych podstron:
<meta name="robots" content="noindex, nofollow" /
Nadal nie jest metodą zapewniającą stuprocentowy sukces (a w dodatku jest mniej wygodna), ale stanowi dodatkowy sygnał dla botów.
Co jeżeli chcesz całkowicie zablokować dostęp botom i przypadkowym osobom? W takiej sytuacji zamiast metod biernych, obliczonych na to, że nikt się do danego miejsca nie doklika, znacznie lepiej po prostu objąć daną sekcję strony ochroną za pomocą hasła (chociażby nałożonego za pomocą htaccess).
Teoretycznie można sięgać też po półśrodki, na przykład w postaci zablokowania dostępu dla wywołań z określonych adresów i klas IP (tych używanych przez boty wyszukiwarek), ale w praktyce wystarczyłoby przegapić część adresów i problem dalej by istniał – a to prowadzi nas ponownie do wniosku, że pełnym zabezpieczeniem będzie właśnie wymuszenie autoryzacji.
Robots.txt dla zaawansowanych: co jeszcze warto wiedzieć o REP?
Najważniejsze informacje o robots.txt już znasz. Jeśli chcesz zgłębić informacje o pliku i innych dyrektywach — zapraszamy do kontynuowania artykułu. Wymienione poniżej dyrektywy bywają nieobsługiwane lub ignorowane przez boty, dlatego ich znaczenie w plikach robots.txt jest znikome.
Pozostałe dyrektywy robots.txt
Allow i disallow to niejedyne dyrektywy, które można stosować w pliku robots.txt. Zapoznaj się z rzadziej spotykanymi dyrektywami crawl-deyal, clean-param i host.
Dyrektywa crawl-delay
W przypadku bardzo dużych witryn często pojawia się dylemat – z jednej strony ich właścicielom może zależeć na indeksacji całości, z drugiej nadmierna aktywność botów wyszukiwarek może zużywać całkiem sporo transferu i obciążać serwer ciągle nowymi zapytaniami. Pomysłem na rozwiązanie tego problemu było wprowadzenie do użycia niestandardowej dyrektywy crawl-delay.
Zapis ten służy do informowania robotów, że nie powinny pobierać nowych plików częściej niż co x sekund, co przekłada się na rozciągniecie pracy robota w czasie. Przykładowy zapis to:
User-agent: * Crawl-delay: 2
– czyli pobieranie kolejnych dokumentów co dwie sekundy.
Warto mieć na względzie, że większość wyszukiwarek dość swobodnie traktuje ten zapis, często po prostu go ignorując. Google przez jakiś czas komunikowało nieistotność tej dyrektywy, by w końcu, w lipcu 2019 roku, oficjalnie ogłosić, że jej nie wspiera. Bing deklaruje, że zapis jest czytany przez BingBota, przy czym jego wartość powinna mieścić się pomiędzy 1 a 30. Dyrektywa teoretycznie jest wspierana także przez Yandex.
Co ciekawe, czeska wyszukiwarka Seznam sugeruje używanie innej dyrektywy, a mianowicie request-rate i przydzielanie jej wartości na zasadzie podania liczby dokumentów w czasie(s jako sekundy, m jako minuty, h jako godziny i d jako dni, za każdy razem bez spacji po liczbie). Przykładem tego rodzaju zapisu może być:
User-agent: SeznamBot Request-rate: 500/1h
bądź:
User-agent: SeznamBot Request-rate: 100/20m
Sam Seznam deklaruje, że dyrektywa nie powinna nakazywać wolniejszej indeksacji, niż 1 dokument na każde 10 sekund.
Dyrektywa clean-param
Bardzo ciekawą dyrektywą, niestety obsługiwaną jedynie przez niektóre wyszukiwarki (np. Yandex), jest clean-param. Dyrektywa ta pozwala ignorować konkretne parametry przypisane do adresów we wskazanych ścieżkach.
Jak to wygląda w praktyce? Załóżmy, że w obrębie Twojej strony istnieją adresy:
domena.com/katalog/ strona?tlo=1& id=3 domena.com/ katalog/ strona?tlo=2& id=3 domena.com/ katalog/ strona?tlo=3& id=3
Co, jeśli zmienna „tlo” modyfikuje jedynie wygląd strony, która cały czas ma tę samą zawartość? W takich przypadkach Yandex proponuje zastosować właśnie parametr clean-param. Odpowiedni zapis może wyglądać tak:
User-agent: Yandex Clean-param: tlo /katalog/
– co oznacza, że wszystkie trzy adresy podane we wcześniejszym przykładzie będą odczytywane jako:
domena.com/katalog/ strona?id=3
Jak widać, ta dyrektywa jest o tyle wygodniejsza, że można ją ograniczyć do konkretnych katalogów.
Dlaczego boty nie zawsze respektują robots.txt? Krótka historia protokołu Robots Exclusion
Robots Exclusion Protocol powstał trzydzieści lat temu, w lutym 1994. Od tego czasu niewiele się w nim zmieniło, jeśli nie liczyć zaistnienia wspomnianych już niestandardowych zapisów. Ponieważ w czasach jego „młodości” na rynku funkcjonowało wiele wyszukiwarek (dość wspomnieć AltaVistę, HotBota, Lycosa, czy InfoSeeka – a lista była przecież znacznie dłuższa), szybko stał się nieoficjalnym standardem. Tu jednak należy wspomnieć, że standardem o tyle nietypowym, że zapis ten tak naprawdę był i jest sugestią, której boty często nie respektują lub respektują ją tylko częściowo.
Co ciekawe, w lipcu 2019 Google – którego boty również nie zawsze w pełni stosują się do dyrektyw zapisanych w plikach robots.txt – zaproponowało, żeby uznać Robots Exclusion Protocol za standard oficjalny. Czy obecnie może to cokolwiek zmienić w sposobie stosowania robots.txt? Teoretycznie nie. Jednak być może spowoduje to dyskusje na temat wprowadzenia nowych zapisów, które mogłyby pomóc w sprawniejszym „sterowaniu” robotami wyszukiwarek.
Jeśli jeszcze czujesz niedosyt wiedzy... możesz zapoznać się z pozostałymi artykułami na temat pozycjonowania stron w naszej Bazie wiedzy.
Artykuł napisany przez Marcina Opolskiego, uaktualniany przez Paulinę Bajorowicz.
International SEO Specialist
SEO Specialist