Co to jest plik robots.txt Do czego służy robots.txt
Plik robots.txt jest plikiem tekstowym umieszczonym w głównym katalogu domeny, który informuje roboty wyszukiwarek o możliwości pobierania, skanowania i indeksowania podstron oraz plików.
Plik robots.txt jest plikiem dla robotów wyszukiwarek, a nie dla użytkowników serwisu. Na początku należy wspomnieć, że plik robots.txt nie jest obowiązkowym, jeżeli nie utworzymy pliku robots.txt to w sumie nic się nie stanie. Po prostu roboty wyszukiwarek będą indeksowały każdą podstronę i każdy plik na jaki natrafią w naszym serwisie. Plik robots.txt jest pierwszym elementem czytanym przez roboty wyszukiwarek po wejściu na serwis.
Plik robots.txt jest plikiem dla robotów wyszukiwarek, a nie dla użytkowników serwisu. Na początku należy wspomnieć, że plik robots.txt nie jest obowiązkowym, jeżeli nie utworzymy pliku robots.txt to w sumie nic się nie stanie. Po prostu roboty wyszukiwarek będą indeksowały każdą podstronę i każdy plik na jaki natrafią w naszym serwisie.
Reguły tworzenia pliku robots.txt określone są w protokole Robots Exclusion Protocol który powstał 1994 roku. System kodowania znaków w pliku robots.txt to UTF-8. Protokół ten obecnie jest formalizowany i pewno niedługo doczekamy się jego nowej wersji.
Jeżeli chcemy zezwolić na indeksowanie jakiejś podstrony czy pliku to nie musimy nic wpisywać, żadnych zezwoleń. Brak wpisów zabraniających indeksowanie jest równoznaczny z zezwoleniem na indeksowanie.
Zapisy w pliku robots.txt są informacją, sugestią dla robotów wyszukiwarek, a nie „twardą” dyrektywą jak np. przekierowanie 301. Co prawda roboty głównych wyszukiwarek respektują zapisy w pliku robots.txt, ale mniej znane wyszukiwarki już nie zawsze.
Plik robots.txt nie służy do ukrywania podstron przed innymi użytkownikami czy konkurencją. Przygotowując podstrony z nową ofertą, nie blokujemy ich w pliku robots.txt ale zabezpieczamy hasłem lub przynajmniej blokujemy poprzez zapis w meta tagu robots sekcji head.
Seowiec analizując konkurencję, zwykle sprawdza plik robots,txt, „co tam chcesz ukryć” 😉 Jeżeli chcemy zabronić indeksacji podstron, ale w taki sposób żeby nikt o tym nie wiedział, należy zrobić to zapisem w head.
Potocznie mówi się, że plik robots.txt służy do blokowania pobierania i indeksowania zasobów serwisu. Nie jest to do końca prawda, ponieważ roboty wyszukiwarek mogą trafić na dany zasób (podstronę, plik) bezpośrednio z linka w sieci, z pominięciem pliku robots.txt.
Ktoś może zastanawiać się w jaki sposób roboty wyszukiwarek odnajdą plik robots.txt na naszym serwerze. Otóż plik robots.txt zawsze ma taką samą nazwę oraz znajduje się w głównym katalogu domeny, czyli mojadomena.pl/robots.txt. Warto to sprawdzić, bo kilka razy spotkałem się z sytuacją gdy blog na WordPress-ie postawiony był w katalogu domeny np. „blog” i tam był plik robots.txt, np. mojadomena.pl/blog/robots.txt. To nie jest prawidłowe i taki plik nie będzie czytany przez roboty wyszukiwarek.
Oprócz dyrektyw zezwalania i zabraniania w pliku robots.txt podajemy adres sitemapy.
Czasami stosuje się jeszcze dyrektywę dotyczącą częstotliwości skanowania zasobów, ale Google ją ignoruje i samo ustala szybkość pobierania zasobów z serwera.
Do czego służy plik Robots.txt
Plik robots.txt służy do zarządzania indeksacją zawartości serwisu przez roboty wyszukiwarek, tych które respektują jego zapisy. W każdym większym serwisie są podstrony i inne treści które nie powinny być pobierane i indeksowane, chociażby ze względu na dodatkowe obciążenie serwera. Są to podstrony np. Logowanie i rejestracja, RODO, Polityka prywatności, Regulaminy, Panel użytkownika, Zasady składania zamówień, Wewnętrzna wyszukiwarka, Koszyk, Reklamacje, Zwroty, itp…
Korzystając z odpowiednich zapisów w pliku robots.txt możemy zasugerować robotom wyszukiwarek żeby nie indeksowały tych podstron czy plików. Dzięki temu możemy znacznie zmniejszyć obciążenie serwera.
Roboty wyszukiwarek wchodząc na serwis zaczynają od przeczytania pliku robots.txt. Reguły pliku robots.txt pozwalają na znaczne modyfikacje procesu pobierania i indeksowania zawartości serwisu, możemy wykluczyć z indeksowania zawartość całego katalogu lub tylko części. Można również ograniczyć indeksowanie określonych typów plików, np. PDF.
Wszystkie zapisy możemy odnieść do robotów wszystkich wyszukiwarek, lub tylko wybranych. Możemy jednym wpisem wykluczyć z indeksowania wszystkie roboty, a w następnym wierszu zezwolić tylko na indeksowanie naszego serwisu przez wybrane roboty, np. Google, Bing itp…
Zapisy w pliku robots.txt nie służą ukrywaniu podstron przed konkurencją, a ograniczeniu pobierania zasobów które z pewnych przyczyn nie powinny być pobierane.
Uwaga, blokada indeksacji w pliku robots.txt nie oznacza, że dana zawartość (podstrona, czy plik) nie zostanie zaindeksowana. Robot wyszukiwarki może trafić na daną podstronę bezpośrednio z jakiegoś linka.
Na co uważać przy tworzeniu pliku robots.txt
Podstawowa zasada przy tworzeniu pliku robots.txt jest taka, że lepiej nie mieć tego pliku niż mieć niepoprawny. Poprzez niepoprawne zapisy możemy zabronić indeksowania i w konsekwencji usunąć z wyników wyszukiwania znaczną część naszego serwisu, albo nawet cały serwis.
Osobiście miałem taką sytuację kilka lat temu, programista dopracowywał nową wersję serwisu na testowej domenie więc oczywiście zablokował wszystko, wszystkim robotom zabronił indeksacji co jest normalną praktyką.
Po dopracowaniu wszystkiego, ustawieniu odpowiednich przekierowań itp… przekopiował serwis na docelową domenę. Nie miałem wtedy czasu na dokładne sprawdzanie i to był niestety błąd.
Spodziewałem się wzrostów pozycji i ruchu, ale też nie byłem zbyt zdziwiony spadkami, tłumacząc sobie, że nowa struktura, przekierowania, zawsze może wystąpić kilka procent spadku, trzeba poczekać kilka dni, itp. . . .
Po tygodniu systematycznych spadków ruchu niepokój jednak się pojawił, sprawdziłem dokładnie i okazało się, że w robots.txt jest zapis o nieindeksowaniu całego serwisu. Skasowanie tego zapisu w pliku robots.txt spowodowało, że ruch i pozycje wróciły w ciągu kilku dni.
Na szczęście była to tylko moja zapleczówka, serwis ogłoszeniowy, ale lekcja pozostała w pamięci 😉
Google zaleca kodowanie pliku robots.txt jako UTF-8. W przypadku innego kodowania dyrektywy mogą nie zostać prawidłowo odczytane i zostaną pominięte.
W zależności od wiersza, mają znaczenie małe i duże litery. Wyjaśniłem to poniżej.
Należy zwrócić uwagę, czy do podstron które chcemy wykluczyć z indeksowania nie prowadzą wartościowe linki przychodzące. W takiej sytuacji lepiej jest zablokować indeksowanie poprzez meta tag noindex w sekcji head. Jeżeli podstronę do której prowadzi duża ilość wartościowych linków zablokujemy w pliku robots.txt to poprzez uniemożliwienie skanowania, Google nie zobaczy do jakich podstron przekazujemy dalej moc płynącą z linków zewnętrznych i wewnętrznych. W efekcie zostaną zmarnowane, utworzymy ślepy zaułek z którego nie ma wyjścia dalej.
Plik robots.txt najlepiej tworzyć w notatniku lub podobnym prostym edytorze tekstów. Nie używamy do tego zaawansowanych edytorów gdyż dodają one czasami różne znaki które mogą sprawiać problemy robotom.
WordPress tworzy plik robots.txt dynamicznie, to znaczy nie ma go na serwerze i jest tworzony na żądanie. Możemy go jednak zastąpić własnym, statycznym plikiem robots.txt, wtedy nie będzie generowany dynamicznie.
Plik robots.txt możemy stworzyć ręcznie lub za pomocą generatorów pliku robots.txt które znajdziemy w sieci. Również popularne CMS-y mają wbudowane generatory pliku robots.txt
Pomimo, że popularne CMS-y mają wbudowane generatory pliku robots.txt to warto pamiętać, że generują w zasadzie tylko podstawowe reguły. Jeżeli mamy inne zasoby i n ie chcemy żeby było pobierane i indeksowane to musimy te reguły dodać ręcznie. W przypadku pliku robots.txt generowanego dynamicznie musimy go zastąpić statycznym plikiem.
Schemat wpisów w pliku robots.txt
Domyślną zasadą jest zezwolenie na indeksowanie wszystkiego przez każdego robota. Jeżeli nie chcemy niczego zabraniać, to w zasadzie możemy zastosować tylko dwa zapisy, zezwolenie na indeksowanie oraz adres sitemapy.
Kodowanie jako UTF-8.
W pliku robots.txt używamy kilku określeń. Są to nazwa robota wyszukiwarki, allow (zezwolenie), disallow (zabronione). Najważniejsze są ich kombinacje, bo dzięki nim możemy zabraniać indeksowania wybranych zasobów lub całych ich grup.
Sitemap, np. https://www.mojadomena.pl/adres-sitemapy.xml lub adres mapy map przy dużych serwisach. Domyślnym adresem sitemapy jest główny katalog domeny i nazwa sitemap.xml, np. mojadomena.pl/sitemap.xml. Jeżeli jednak zmieniliśmy adres i nazwę sitemapy, warto je podać w pliku robots.txt. Ale to również w w sytuacji gdy nie chcemy jej ukryć 😉
User-agent: nazwa robota. Tutaj zwracamy się do robotów. Wszystkich robotów za pomocą znaku gwiazdki „*” lub wybranych np. Googlebot. Wielkość liter w wartości wiersza user-agent nie jest rozróżniana. Uwaga, nie dotyczy to robotów typu Ads, te musimy wymieniać osobno.
Disallow: adres zasobu. Disallow oznacza zabroniony, czyli zabraniamy indeksowania zasobu który jest dalej wymieniony. Wielkość liter w wartości dyrektywy disallow jest rozróżniana.
Allow: adres zasobu. Allow oznacza dozwolony, czyli zezwalamy na indeksowanie zasobu który jest wymieniony. Wielkość liter w wartości dyrektywy allow jest rozróżniana.
Gwiazdka czyli znak *, oznacza dowolny ciąg znaków, czyli w wierszu User-agent wszystkie roboty, a w wierszach Disallow lub Allow zastępuje dowolny ciąg znaków. Gwiazdka jest ciekawym znakiem który zastępuje dowolny ciąg znaków o dowolnej długości. Np. zapis Disallow: /*/instrukcja.html zablokuje plik instrukcja.html w każdej lokalizacji, przykładowo:
/katalog1/instrukcja.html
/katalog2/instrukcja.html
/katalog1/podkatalog1/podkatalog2/instrukcja.html
Użycie gwiazdki zablokuje plik instrukcja.html w każdej lokalizacji
Podobnie możemy zabronić indeksacji dla wybranego typu pliku, np. tylko PDF, zapis: Disallow: /*.pdf Żaden plik pdf, w żadnym folderze nie będzie indeksowany.
Gwiazdkę możemy również wykorzystać do blokowania indeksacji plików o określonej nazwie lub części nazwy, np. poprzez zapis Disallow: /*/tymczasowy* zablokuje wszystko co ma w nazwie na początku „tymczasowy”.
$ czyli operator końca adresu. Za pomocą tego znaku informujemy roboty o końcu adresu którego dotyczy dyrektywa, np. Disallow: mojadomena.pl/oferta/oferty-specjalne$. Gdyby nie znak $ to wszystko w katalogu „oferty-specjalne” i dalej było by zabronione. Użycie znaku $ powoduje, że np. Disallow: mojadomena.pl/oferta/oferty-specjalne/rozne-pliki będą indeksowane.
# to znak komentarza, umieszczenie w wierszu na początku powoduje, że wiersz nie jest czytany przez roboty, takie komentarze ułatwiają pracę osobom które przygotowują plik robots.txt.
Crawl-delay, podaje się w sekundach. Za pomocą tej komendy możemy spowolnić szybkość pobierania zasobów z naszego serwera. Google jednak nie respektuje tych zapisów i samo ustala szybkość pobierania zasobów.
Sama komenda „Allow” nie ma sensu, bo po co zezwalać na coś co i tak domyślnie jest dozwolone. Komenda Allow używana jest w połączeniu z Disallow, czyli zabraniamy indeksowania poprzez Disallow, ale robimy wyjątek dla jakiegoś zasobu czy robota poprzez komendę Allow.
Zapisy w pliku robots.txt umieszczamy w grupach. Wymagana jest przynajmniej jedna grupa. Poniżej kilka przykładów.
Podstawowy zapis pliku robots.txt pozwalający na indeksowanie wszystkiego w naszym serwisie i każdemu robotowi:
User-Agent: *
Allow: /
Mamy tutaj gwiazdkę czyli wszystkie roboty oraz Allow czyli wszystko. Wolna amerykanka 😉
Zapis blokujący dostęp do wybranych podstron, np. Regulaminu i Logowania.
User-Agent: *
Disallow: /regulamin.php
Disallow: /logowanie.php
Gwiazdka oznacza wszystkie roboty, a Disallow zabronione pobieranie i indeksowanie podstron mojadomena.pl/logowanie.php i mojadomena.pl/regulamin.php
Kolejny, prosty zapis zabraniający indeksowania wszystkich zasobów, wszystkim robotom:
User-Agent: *
Disallow: /
Przydaje się w czasie prac nad nowym serwisem który stawiamy na jakiejś testowej domenie/subdomenie nie chcemy żeby coś ukazało się w wyszukiwarce zbyt wcześnie. Tutaj należy bardzo uważać przy przenoszeniu na docelowy serwis, ponieważ w ten prosty sposób możemy wyindeksować cały serwis. Zapis stosujemy tylko jeżeli mamy nową domenę lub subdomenę i nikt jeszcze nie zna jej nazwy oraz żadne zasoby nie zostały jeszcze zaindeksowane.
Zapis zabraniający indeksowania katalogu np. „instrukcje”, ale zezwalający na indeksowanie konkretnej instrukcji, np. instrukcja-obslugi.php.
User-Agent: *
Disallow: /instrukcje/
Allow: /instrukcje/instrukcja-obslugi.php
Poprzez wpis Disallow zabraniamy indeksowania wszystkiego w katalogu „instrukcje”, ale w następnym wierszu komendą Allow zezwalamy na indeksowanie podstrony jednej instrukcji.
Zapis w pliku robots.txt zezwalający robotowi Google na indeksowanie zasobów, a zabraniający indeksowania wszystkim pozostałym robotom wyszukiwarek.
User-Agent: *
Disallow: /
Allow: googlebot
Nazwy robotów:
Robotów chętnych do skanowanie naszego serwisu i pobierania zasobów w dobrych lub mniej dobrych (np. spam) celach jest dużo. Samo Google ma ich kilkanaście. Są to nie tylko roboty wyszukiwarek, ale również roboty różnych narzędzi analitycznych, np. Afrefs. Poniżej przykładowa lista, ale w rzeczywistości są ich setki i ciągle przybywają nowe.
Google: Googlebot, Googlebot-News, Googlebot-Video, Googlebot-Image, plus roboty Google Ads
Bing: Bingbot
Yahoo: Slurp
Yandex: YandexBot
DuckDuckGo: DuckDuckBot
Blokada w pliku robots.txt podstron już zaindeksowanych
Jeżeli chcemy zablokować przed indeksowaniem podstronę która już jest zaindeksowana w Google, to musimy skorzystać z meta tagu „noindex” w sekcji head. Wykorzystanie dyrektywy Disallow w pliku robots.txt nie spowoduje wyindeksowania podstrony, a tylko usunięcie opisu, czyli w większości przypadków description. Sama informacja o tym zasobie jednak pozostanie w wynikach wyszukiwania.
Nie łączymy zapisów zabraniających indeksowania podstrony w pliku robots.txt oraz meta tagu robots sekcji head.
Meta tag noindex w sekcji head
W protokole Robots Exclusion Protocol zdefiniowano również polecenia dla robotów w metadanych w sekcji head. Zwykle stosuje się polecenia index/noindex czyli indeksuj/nie indeksuj oraz follow/nofollow czyli przekazuj/nie przekazuj mocy linków z danej podstrony dalej.
Wpis ma postać <meta name=”robots” content=”index/noindex, follow/nofollow”>. Oczywiście atrybuty do wyboru, możliwe są wszystkie kombinacje.
Atrybut noindex nakazuje wyszukiwarkom nieindeksowania danej podstrony, czyli nie będzie jej w wynikach wyszukiwania. Artybut index zezwala na indeksowanie, ale w sumie jest zbędny bo zezwolenie na indeksowanie jest domyślne.
Atrybut follow pozwala wyszukiwarkom na przekazywanie mocy linków z danej podstrony dalej, a atrybut nofollow zabrania wyszukiwarkom przekazywania mocy linków dalej. To znaczne uproszczenie, ale ten artykuł nie jest o linkach 😉
Kombinacja tych atrybutów pozwala zarządzać indeksowaniem podstrony oraz przekazywaniem mocy linków, np.
– index, follow czyli indeksuj i przekazuj moc linków;
– indeks, nofollow, czyli indeksuj, ale nie przekazuj dalej mocy linków;
– noindex, follow, czyli nie indeksuj, nie pokazuj w wynikach wyszukiwania, ale przekazuj dalej moc linków;
– noindex, nofollow, czyli nie indeksuj i nie przekazuj dalej mocy linków.
Szczególnie należy uważać na dyrektywę nofollow, tutaj łatwo o przeoczenie, strona się indeksuje, jest w wynikach wyszukiwania więc powinno być wszystko dobrze. Tymczasem nofollow oznacza, że moc linków nie będzie przekazywana dalej. Pomyślmy, postawiliśmy fajną podstronę, pozyskaliśmy dużo wartościowych linków wewnętrznych i zewnętrznych i dalej nic, utworzyliśmy ślepy zaułek w którym cała ta moc zostanie zmarnowana, nie zostanie przekazana dalej. Tak działa nofollow, przerywa przepływ mocy linków.
Zapisy możemy kierować również do konkretnego robota, np. Google <meta name=”googlebot” content=”noindex””>.
Matetag noindex, a atrybut disallow w robots.txt
Meta tagiem noindex w sekcji head nie oznacza się podstron zablokowanych przez plik robots.txt, roboty nie znajdą na nich informacji „noindex” i mogą ją zignorować.
Paradoksalnie, możemy mieć sytuację gdy blokujemy podstronę w pliku robots.txt, blokujemy ją również w meta tagu robots noindex sekcji head, a podstrona nadal wyświetla się w wynikach wyszukiwania. Dwa razy zablokowana, a dalej się wyświetla 😉
Dzieje się tak dlatego, że jeżeli użyjemy obydwu zapisów, to robot najpierw odczyta zapisy w pliku robots.txt które zabraniają mu pobierania danej podstrony, więc nie pobiera jej i nie odczyta już polecenia „noindex” zapisanego w meta tagu robots sekcji head danej podstrony. Jeżeli przypadkowo robot znajdzie linki do danej podstrony w sieci to ją wyświetli w wynikach wyszukiwania.
Różnica w zapisach w pliku robots.txt oraz meta tag robots w sekcji head
Komunikować z robotami wyszukiwarek możemy się zarówno przez zapisy w pliku robots.txt lub też poprzez zapis w meta tagu robots sekcji head. Na pierwszy rzut oka te zapisy działają podobnie, ale przy bliższym przyjrzeniu się znajdziemy zasadnicze różnice które wypisałem poniżej.
Zapis disallow w pliku robots.txt powoduje, że dana podstrona nie będzie pobierana, analizowana i indeksowana. Oszczędza to zasoby naszego serwera oraz robotów wyszukiwarek w kontekście parametru Crawl budget. Robot wyszukiwarki trafiając w pliku robots.txt na zapis zabraniający mu indeksowania danej podstrony przestaje się nią interesować i nie pobiera jej. Przynajmniej tak być powinno, ale nie wszystkie roboty wyszukiwarek stosują się do tych zapisów 😉
Z drugiej strony jednak, jeżeli robot wyszukiwarki znajdzie w sieci linki do danej podstrony to może ją zaindeksować, pomimo dyrektywy zabraniającej w pliku robots.txt.
Inaczej wygląda sytuacja gdy dyrektywę zabraniającą indeksowania umieścimy w sekcji head danej podstrony. Wtedy robot wyszukiwarki musi pobrać daną podstronę, przeanalizować ją i po odczytaniu dyrektywy „noindex” dopiero wtedy decyduje o nieumieszczaniu jej w indeksie wyników wyszukiwania. Powoduje to niepotrzebne obciążanie serwera i robotów wyszukiwarek ponieważ robot wyszukiwarki pobiera daną podstronę, analizuje ją i dowiaduje się, że nie wolno mu jej wyświetlać. Zwracam uwagę, że wcześniej musiał ją pobrać i przeanalizować, obciążył nam serwer i sam poświęcił czas i swoje zasoby.
Kolejna różnicą jest to, że zapisy w pliku robots.txt są sugestiami, prośbami, które nie muszą być respektowane, a zapisy w meta tagu robots sekcji head są dla wyszukiwarek obowiązujące.
Przy niewielkiej ilości podstron w zasadzie nie ma czym się przejmować, ale przy większej ilości warto starannie przemyśleć zapisy.
Jak sprawdzić poprawność pliku robots.txt
Po utworzeniu pliku robots.txt warto przetestować jego poprawność, w sieci jest sporo narzędzi do testowania pliku robots.txt. Na początek wystarczy zrobić to w Google. W nowej wersji GSC nie mamy bezpośredniego dostępu, więc podaję adres do starszej wersji: https://www.google.com/webmasters/tools/robots-testing-tool Po prawej stronie mamy możliwość wyboru robota Google.
Innym narzędziem gdzie możemy sprawdzić plik robots.txt w robotach różnych wyszukiwarek jest https://technicalseo.com/tools/robots-txt/
Czy warto tworzyć plik robots.txt
Nieprawidłowe zapisy w pliku robots.txt mogą narobić dużo szkód w serwisie więc czasami można zastanawiać się czy warto poświęcać czas na ten plik. Moim zdaniem tak, warto. Poprzez prawidłowe zapisy w pliku robots.txt możemy znacznie ograniczyć obciążenie serwera poprzez wyeliminowanie robotów różnych egzotycznych wyszukiwarek z których i tak wartościowego ruchu nie będzie.
Tu jednak warto przemyśleć i być ostrożnym. Komenda zabraniająca ideksowania robotom wszystkich wyszukiwarek z wyjątkiem Google i Binga nie jest dobrym pomysłem. Wyszukiwarki mogą zmienić nazwę robota lub utworzyć nowego, samo Google ma ich kilkanaście. Lepszym pomysłem jest blokada wybranych robotów, chociaż może to być uciążliwe.
Tak samo z Google i głównymi wyszukiwarkami, możemy ograniczyć pobieranie, skanowanie i indeksowanie zasobów których nie chcemy widzieć w wyszukiwarce, np. regulamin, kontakt, rejestracja itp…
Czy Google to zawsze Google?
Główny robot Google to Googlebot, ale jest też kilka innych robotów Google odpowiedzialnych za obrazy, reklamy, itp… Każdy robot identyfikuje się po wejściu na serwer, np. robot Google sprawdzający jakość reklam na urządzeniach z Androidem zgłasza się jako AdsBot-Google-Mobile.
Niestety, z racji tego, że nazwy robotów są powszechnie dostępne dosyć łatwo podszyć się pod robota Google czy innych zaufanych wyszukiwarek. Google nie udostępnia listy swoich IP tłumacząc to częstymi zmianami. W związku z tym spamerzy mogą tak konstruować swoje roboty żeby te zgłaszały się jako jeden z robotów Google, Binga czy innych zaufanych.
Prawdziwość robota możemy zweryfikować poprzez odwrotne wyszukiwanie DNS adresu IP, który jest w logach serwera, przy użyciu polecenia host. Ale to temat na inny artykuł.
Historia i przyszłość pliku robots.txt
Specyfikacja pliku robots.txt opisana jest w protokole REP czyli Robots Exclusion Protocol. W zasadzie to trudno go nazwać formalnym protokołem, jest to raczej zbiór zasad których roboty wyszukiwarek powinny przestrzegać. Powinny, ale nie muszą, ponadto każdy robot interpretuje plik robots.txt inaczej.
Dlatego niedawno Google postanowiło to uporządkować i zgłosiło wniosek do IETF (Internet Engineering Task Force, nieformalne stowarzyszenie dbające o standardy w internecie) o standaryzację protokołu. Dodatkowo, Google upubliczniło swój kod parsera pliku robots.txt.
W praktyce oznacza to, że to Google będzie narzucało zasady interpretacji przez roboty pliku robots.txt i w większości to co zaproponuje Google stanie się standardem. Mam wątpliwości czy to dobre rozwiązanie, ale z drugiej strony lepszy chyba będzie taki standard niż żaden.
Prace trwają, czekamy na oficjalny dokument.
Podsumowanie
- Plik musi nazywać się robots.txt.
- Serwis może mieć tylko jeden plik robots.txt.
- Plik robots.txt służy do informowania botów wyszukiwarek które podstrony lub pliki mogą być pobierane, skanowane i indeksowane, a które nie.
- Plik robots.txt umieszczamy zawsze w głównym katalogu serwisu. Nie zgłaszamy do Google jak w przypadku sitemapy.
- Plik robots.txt przeznaczony jest dla robotów wyszukiwarek, a nie dla użytkowników.
- Zapisy w pliku robots.txt są tylko informacjami, prośbami. Nie wszystkie boty stosują się do tych poleceń, szczególnie jakieś mało znane, egzotyczne wyszukiwarki. Jednak boty głównych wyszukiwarek respektują zapisy pliku robots.txt.
-
Jeżeli chcemy pozwolić każdemu robotowi na indeksowanie każdej podstrony, wszystkiego, to w zasadzie plik robots.txt nie jest potrzebny. Chociaż z
drugiej strony elegancko jest go mieć i wstawić komendę zezwalająca wszystkim na wszystko. - Jest wiele narzędzi do tworzenia pliku robots.txt, można go również utworzyć ręcznie przy niewielkiej ilości wpisów.
- Do pliku robots.txt możemy wstawić również adres sitemapy.
- Zasobów których nie chcemy indeksować i blokujemy je w pliku robots.txt nie zamieszczamy w sitemapie.
- Wszystkie roboty wyszukiwarek możemy zastąpić „*”. Uwaga, nie dotyczy to robotów Google odpowiadających za reklamy.
- Symbolem „#” oznaczamy komentarz, wtedy taki wiersz nie jest czytany przez roboty.
- Zapisy w pliku robots.txt czytane są w kolejności, począwszy od góry.
- Użycie komendy „disallow” w pliku robots.txt, nie daje gwarancji braku indeksacji takiej podstrony, Google może dotrzeć do takiej podstrony poprzez różne linki.
- W przypadku pomyłki i wpisaniu sprzecznych komend, zezwalających i blokujących, Google wybierze komendę zezwalającą. Inne roboty czasami wybiorą komendę wg kolejności.
- W pliku robots.txt mają znaczenie małe i duże litery w zależności od wiersza.
- Roboty wyszukiwarki Google oraz robot reklam Google funkcjonują niezależnie od siebie, ale korzystają ze wspólnej pamięci podręcznej celem zmniejszenia obciążenia serwera.
- Komendy dla robotów Google związanych z reklamami należy definiować w osobnych wpisach.
- Podstron blokowanych zapisem w meta tagu robots sekcji head nie blokujemy w pliku robots.txt.
- Brak pliku robots.txt nie jest błędem, oznacza zezwolenie każdemu robotowi na pobieranie i indeksowanie wszystkich zasobów. Warto jednak mieć plik robots.txt ze względów formalnych, większość narzędzi do audytu będzie nam pokazywało błąd w przypadku braku tego pliku. Wystarczy podstawowy wpis, dwa króciutkie wiersze.
- Dyrektywy Disalow są ignorowane przez roboty Google które analizują bezpieczeństwo serwisu, np. szukając złośliwego oprogramowania.
- Dyrektywy w pliku robots.txt odnoszą się tylko do danego serwisu, nie dotyczą subdomen.
-
Google zwykle przechowuje plik robots.,txt w pamięci podręcznej przez 24 godziny, jednak w przypadku błędów serwera okres ten może się wydłużyć.
Możemy jednak przyspieszyć pobranie aktualnej wersji pliku robots.txt https://www.google.com/webmasters/tools/robots-testing-tool?hl=pl. - Maksymalny rozmiar pliku robots.txt to 500 kB, po przekroczeniu maksymalnego rozmiaru Google ignoruje dalsze zapisy.
- Pamiętajmy, że plik robots.txt czytany jest od góry.
- W przypadku zbiegu sprzecznych dyrektyw, robot Google stosuje się do dyrektywy najmniej restrykcyjnej.
- Należy bardzo starannie konstruować plik robots.txt, ponieważ jedną komendą możemy zablokować indeksowanie znacznej części naszego serwisu.
Przeczytałem wszystko, dużo tego jest, ale nie rozumiem jednego. Skoro ten robots nie gwarantuje zablokowania wpisów to po co go stosować? Nie lepsze noindex?
W zasadzie blokowanie w pliku robots stosujemy żeby obciążyć serwer, uchronić przed niepotrzebnym ruchem. Robot żeby odczytać tag noindex musi najpierw pobrać zawartość i przeanalizować, a to powoduje obciążenie serwera oraz Google i niepotrzebnie zabiera nam zasoby przydzielone dla naszej strony.