Robots.txt to plik zawierający instrukcje dla różnego rodzaju robotów skanujących witryny internetowe, mówiący jak roboty powinny się na stronie zachowywać.
Jest to jeden ze sposobów, na zastosowanie Robots Exclusion Protocol (REP), czyli półoficjalnego (w trakcie standaryzacji) protokołu z pomocą którego wyłączamy na naszej witrynie dostępność określonych zasobów dla określonych robotów.
Ważne: Nie jest to jednoznaczne z zakazem ich indeksowania, o czym przeczytasz w dalszej części.
Dla początkujących
- Plik robots.txt mówi robotowi Google do których części Twojej strony nie powinien zaglądać.
- Znajduje się w katalogu głównym strony (czyli jest dostępny pod adresem domena.pl/robots.txt)
- Używaj ostrożnie – przemyśl które adresy chcesz zablokować.
- W gotowych CMSach takich jak WordPress, domyślny plik robots.txt tworzony jest automatycznie.
Spis treści
Czym jest plik robots.txt?
Robots.txt to zwyczajny plik tekstowy o nazwie robots.txt, znajdujący się w głównym katalogu naszej strony (czyli dostępny bezpośrednio pod adresem domena.pl/robots.txt).
Zawiera przede wszystkim komendy, które pozwalają poinformować roboty crawlujące sieć (m.in. roboty Google) których części naszej strony mają NIE odwiedzać.
Plik robots.txt jest narzędziem przeciwnym do mapy witryny (sitemapy). Ta służy do wskazywania adresów, które robot powinien odwiedzić, robots.txt odwrotnie – wskazuje te, których powinien unikać.
Instrukcja czy wskazówka?
W przeciwieństwie np. do zapisów w pliku .htaccess, wszelkie informacje zawarte w pliku robots.txt są dla robotów wskazówkami, a nie wytycznymi.
Każda szanująca się firma lub instytucja powinna tworząc robota skanującego internet wziąć pod uwagę i respektować zapisy pliku robots.txt – nie da się jednak tego w żaden sposób wymusić, dlatego też plik robots.txt nie jest w stanie zablokować robotów spamerskich, phishingowych czy nielegalnych harvesterów.
Działa on jednak doskonale w przypadku robotów wyszukiwarek, takich jak Google, Bing i innych.
Jak powinien wyglądać robots.txt?
robots.txt służy przede wszystkim do informowania robotów, że nie chcemy by skanowały określone przez nas pliki. Ponieważ standard REP jest wciąż półoficjalny, niektóre roboty respektują dodatkowe komendy, poza Disallow i Allow.
Disallow
Podstawową komendą pliku robots.txt jest disallow, zabraniający robotowi dostępu do wybranego folderu lub pliku. Komendę należy poprzedzić wyborem robota, którego ma ona dotyczyć. Symbol „*” to wildcard, odnoszący się do wszystkich robotów:
User-agent: * Disallow: /tmp/
Zabroniliśmy w ten sposób wszystkim robotom dostępu do folderu „tmp”.
User-agent: YandexAccessibilityBot Disallow: /
W tym wypadku zablokowaliśmy dostęp do całej strony robotowi Yandex.
Allow
Allow to komenda zezwalająca na skanowanie określonego miejsca w witrynie.
Domyślnie umożliwiamy robotom skanowanie całej witryny, neutralny robots.txt wygląda więc tak:
User-agent: * Allow: /
Taki zapis w robots.txt równoważny jest z brakiem pliku robots.txt, ponieważ domyślnie i tak zezwalamy robotom na skanowanie wszystkiego.
Komenda Allow przydaje się np. wtedy, gdy blokujemy określony folder, ale chcemy udostępnić robotom wybrane pliki które się w nim znajdują:
User-agent: * Disallow: /docs/ Allow: /docs/plik.pdf
Z całego folderu „docs” roboty będą miały tu dostęp jedynie do pliku „plik.pdf”.
Crawl-delay
Niektóre roboty – przy czym od razu zaznaczam: NIE Googlebot – respektują zapis komendy crawl-delay. Możemy dzięki niej spowolnić wizyty niektórych robotów, jeśli zbytnio obciążają one nasz serwer. Brak jest dokładnej dokumentacji dla tej komendy, dlatego jej respektowanie i interpretowanie jest bardzo zróżnicowane; najczęściej jest to po prostu wyrażenie liczby sekund, jakie robot ma odczekać pomiędzy kolejnymi wizytami na stronie:
User-agent: * Crawl-delay: 10
Sitemap
Niektóre roboty potrafią odczytać z pliku robots.txt adres naszej mapy strony – jednej lub wielu jednocześnie. Podajemy tu pełny adres URL mapy:
Sitemap: http://www.example.com/sitemap.xml
Host
Pewne crawlery potrafią z pliku robots.txt odczytać preferowaną domenę w przypadku serwisów mających wiele mirrorów na różnych serwerach. Jest to raczej rzadko używana komenda z przeszłości, którą opisuję tylko dla formalności:
Host: main.domena.pl
Komentarze
Plik robots.txt dopuszcza również umieszczanie w nim komentarzy, poprzedzonych hasztagiem:
User-agent: AhrefsBot # blokujemy robot Ahrefsa Disallow: / # w calym serwisie
Przykłady
User-agent: googlebot # robot Google Disallow: /tajne/ # nie pokazujemy mu tego folderu User-agent: bingbot # robot Bing Disallow: / # ma calkowity zakaz User-agent: * # wszystkie roboty Disallow: /temp/ # wara od folderu temp
Jak stworzyć i gdzie powinien znaleźć się plik robots.txt?
To nie jest żadna filozofia – jest to zwyczajny plik tekstowy, jaki możemy stworzyć w notatniku. Po nadaniu mu nazwy robots.txt umieszczamy go w katalogu głównym naszej strony.
Plik nie może znajdować się w folderze – musi być dostępny po dopisaniu „/robots.txt” do nazwy domeny np.:
domena.pl/robots.txt
Jeśli pracujemy na subdomenie, to podobnie:
subdomena.domena.pl/robots.txt
Nie możesz umieścić pliku robots.txt w subfolderze:
domena.pl/folder/robots.txt subdomena.domena.pl/terefere/robots.txt
Robots.txt a WordPress
Edycja robots.txt to czynność wykonywana raz na wiele miesięcy (o ile nie raz na zawsze) i nie ma sensu specjalnie do tego celu instalować i utrzymywać wtyczki.
Lepszym rozwiązaniem jest ręczne wyedytowanie istniejącego domyślnego pliku robots.txt, dostępnego pod adresem domena.pl/robots.txt
O dziwo, mimo, że po przejściu pod ten adres plik nam się wyświetla, próżno szukać go na naszym serwerze. Dzieje się tak dlatego, że WordPress tworzy wirtualny plik robots.txt, który fizycznie nie istnieje na serwerze.
Aby go nadpisać, wystarczy stworzyć własny plik i umieścić go w głównym katalogu – wirtualny plik przestanie się wyświetlać.
Robots.txt, X-robots-tag czy meta robots?
Bardzo dużo zamieszania powoduje częste mylenie dwóch różnych metod komunikacji z robotami: robots.txt i meta robots (X-robots-tag działa właściwie tak jak meta robots, więc nie będę tu oddzielnie go omawiał).
Powód nieporozumienia, to niewłaściwie rozumienie celu w jakim dane rozwiązanie się stosuje.
Robots.txt:
- dajemy znać robotom, że nie powinny pobierać zawartości strony
- nie mówimy nic o sposobie indeksacji naszej strony
Robots meta tag:
- instruujemy co robot ma zrobić, kiedy już pobierze zawartość strony
- instruujemy co do sposobu indeksacji i dalszego skanowania witryny
Jeśli więc w indeksie Google znajduje się strona, której tam nie chcemy, nie powinniśmy używać do wyindeksowania pliku robots.txt.
Do wyindeksowania danego URL służy parametr noindex w meta tagu robots. Aby go odczytać, robot musi pobrać zawartość witryny. Nie może tego zrobić, jeśli zablokujemy mu dostęp w robots.txt.
Krótko mówiąc: robots.txt jeśli nie chcemy by robot nas w ogóle odwiedzał, robots meta tag jeśli chcemy odwiedzin, ale np. nie chcemy indeksacji.
Strona zablokowana w robots.txt może pojawić się w indeksie Google np. dlatego że trafiła tam już przed zablokowaniem, albo np. inna witryna do niej linkuje.
Strona zindeksowana, ale zablokowana przez plik robots.txt
Strona zindeksowana, ale zablokowana przez plik robots.txt to komunikat, jaki pojawia się w niektórych przypadkach w Google Search Console. Oznacza, że blokujemy w pliku robots.txt dostęp do danego adresu URL, który znajduje się w indeksie Google.
Jeśli chcemy pozbyć się tego adresu z indeksu Google, należy usunąć blokowanie go z pliku robots.txt, a stronie nadać meta tag noindex (więcej w poprzednim akapicie).
Komunikat ten pojawia się, jeśli zablokujemy dostęp do danego adresu robotom Google, mimo że:
- strona znajduje się już w indeksie
- roboty trafiają pod ten adres z innych źródeł (np. z linków z innych stron)
W wyniku zablokowania adresu w robots.txt, roboty nie są w stanie odczytać informacji pod tym adresem – nie wiedzą więc, np. czy na stronie znajduje się meta tag noindex.
Czy plik robots.txt trzeba gdzieś zgłaszać?
W przeciwieństwie do np. mapy witryny, którą warto zgłosić, plik robots.txt jest pobierany automatycznie. Dzieje się tak dlatego, że istnieje tylko jedno miejsce, w którym plik może być obecny; poza tym jego nazwa pozostaje niezmienna (w przeciwieństwie do mapy witryny, którą możemy dowolnie nazwać i umieścić w dowolnym miejscu na serwerze). Pliku robots.txt mnie trzeba więc nigdzie zgłaszać; podczas pierwszej wizyty roboty respektujące zapisy REP podejmą próbę jego pobrania automatycznie.
Czy brak pliku robots.txt to błąd?
Nie. Brak pliku robots.txt jest równoważny z plikiem zezwalającym na crawlowanie wszystkiego (Allow: /). Warto jednak rozważyć jego dodanie, i zablokować crawlowanie zbędnych elementów, pozwalając np, robotowi Google na spędzenie więcej czasu na treściach, które faktycznie są dla nas istotne.
Nawet jeśli nie posiadamy pliku robots.txt, większość robotów przy pierwszej wizycie podejmie próbę jego pobrania.
Skąd czerpać nazwy botów?
Blokowanie istotnych treści dla nieistotnych robotów to często wylewanie dziecka z kąpielą. Warto zablokować nieistotne strony i pliki dla wszystkich botów, ale jeśli upierasz się, by tę listę wyselekcjonować, tutaj znajdziesz listę 220 aktywnych pająków przeczesujących sieć i zżerających zasoby Twojego serwera.