5 sierpnia 2011

Plik robots.txt

Dziś chciałbym pokazać Wam czym jest plik robots.txt, jakie jest jego zastosowanie i czy warto go stosować. Plik robots (ang. spider, robot, crawler) umożliwia kontrolowanie zachowań robotów sieciowych oraz ich dostęp do zasobów w danej witrynie internetowej. Inaczej mówiąc, podczas tworzenia pliku wskazujemy jakie roboty oraz jakie dane mogą zostać znalezione i zaindeksowane przez wyszukiwarki internetowe, katalogi itp.

Wyobraźmy sobie sytuację, gdy na naszym serwerze znajduje się witryna internetowa, która składa się z kilku katalogów. Dodatkowo na serwerze umieszczone są prywatne dane np. w katalogu /temp/. Jak łatwo się domyślić, chcemy aby nasza witryna została zaindeksowana przez wyszukiwarki internetowe, ale bez wspomnianego katalogu /temp/. Podany przykład możemy bez problemu zaimplementować w pliku robots.txt. Szczegóły i zasady tworzenia pliku robots zostały opisane w dwóch dokumentach. Pierwszy z nich w 1994 r. „A Standard for Robot Exclusion”, drugi w 1997 r. „A Method for Web Robots Control”.

Zasady i reguły pliku robots
1) Wymagana nazwa pliku to „robots.txt” i powinien być zwykłym plikiem tekstowym.
2) Plik robots musi zawsze znajdować się w katalogu głównym serwera HTTP (inna lokalizacja pliku nie przyniesie żadnego rezultatu).
3) Odpowiedzi serwera pliku robots:
- 3xx (przekierowanie) – podążaj za plikiem
- 401 Unauthorized – nie pobieraj żadnych zasobów,
- 403 Forbidden – nie pobieraj żadnych zasobów,
- 404 Not Found (brak pliku na serwerze) – pobierz wszystkie zasoby,
- 503 Service Unavailable (plik niedostępny) – próba analizy zostanie powtórzona.
4) Stosowanie pliku robots jest opcjonalne.

Składnia pliku
Plik robots składa się z rekordów o następującej konstrukcji:
pole: wartość
Dozwolone są również komentarze przy użyciu znaku # - hash np.
# to jest komentarz pliku robots.txt

Pole User-agent w pliku robots.txt
określa nazwę – identyfikator robota. Korzystając z tego pola określamy jakie roboty mają dostęp do zasobów naszej witryny. Pole może przyjmować następujące wartości:
- * (określa wszystkie roboty),
- Googlebot (robot Google),
- msnbot (robot MSN),
- slurp (robot Yahoo),
- inne roboty: Adsbot-Google, Googlebot-Mobile, Googlebot-Image, itd.
Szczegółowy opis i wykaz wszystkich robotów znajduje się na oficjalnej witrynie pliku robots.

Ponieważ samo zadeklarowanie robota nie przyniesie żadnego rezultatu, należy nadać każdemu robotowi atrybut dostępu. Są to:
Disallow – dostęp zabroniony,
Allow – dostęp do zasobów (niezalecany i niewykorzystywany).

Poniższy przykład pokazuje zdefiniowany rekord:
# znacznik Allow nie jest zalecany!
User-agent: Googlebot
Allow: /temp/
Disallow: /abc/

Na samym początku określamy w polu User-agent robota i jego nazwę. Następnie korzystając z atrybutów Allow – robot Googlebot otrzyma dostęp do katalogu /temp/, a atrybut Disallow uniemożliwi dostęp do katalogu /abc/. W pierwszej linii powyższego przykładu widzimy komentarz rozpoczynający się od znaku #. Użyty w przykładzie atrybut Allow jest zbędny, ponieważ zawartość (poza zawartością wskazaną w ścieżce Disallow) będzie dostępna dla robotów.

Oczywiście w jednym pliku robots, możemy definiować zachowania dla jednego, kilku lub wszystkich robotów, określając ich dostęp do zasobów np.:

# robot Google
User-agent: Googlebot
Disallow: /temp/
Disallow: /wazne/

# pozostałe roboty
User-agent: *
Disallow: /


W powyższym przykładzie pierwszy robot Googlebot nie otrzyma dostępu do katalogów: /temp/ oraz /wazne/. Wszystkie pozostałe zasoby dostępne będą dla Googlebot. Drugi wpis określa zachowanie wszystkich niewymienionych wcześniej robotów, a zapis Disallow: /
oznacza zablokowanie dostępu wszystkich plików i folderów.

Kolejny bardziej rozbudowany przykład:
# pierwszy wpis
# pusta wartość w Disallow oznacza dostęp do wszystkich zasobów
User-agent: Googlebot
User-agent: msnbot
Disallow:

# drugi wpis
User-agnet: Adsbot-Google
User-agnet: Googlebot-Image
Disallow: /

# trzeci wpis
User-agent: slurp
Disallow: /dokumenty/

# czwarty wpis
User-agent: *
Disallow: /dokumenty/
Disallow: /temp/plik.html


Roboty Googlebot i msnbot otrzymają dostęp do wszystkich folderów i plików, natomiast całe zasoby serwera zostaną zablokowane dla robotów Adsbot-Google i Googlebot-Image. Trzeci wpis zablokuje dostęp do katalogu /dokumenty/ dla robota slurp. Pozostałe roboty będą miały dostęp do wszystkich zasobów oprócz katalogu /dokumenty/ i pliku /temp/plik.html.

Pole Sitemap w pliku robots.txt
Niektóre roboty internetowe wspierają mapy witryn (ang. sitemap), które zostały szczegółowo opisane w artykule „Mapy witryny XML”. Dzięki takiemu rozwiązaniu możemy od razu w pliku robots.txt zdefiniować odwołanie do mapy witryny strony internetowej. Poniżej przykład wpisu definiujący mapy witryny w pliku robots.txt:

# przykład zastosowania wpisu mapy witryny w pliku robots.txt
Sitemap: http://www.piwnicait.blogspot.com/sitemap.xml
Sitemap: http://www.piwnicait.blogspot.com/sitemap-index.xml


Ważne reguły i zalecenia przy tworzeniu wpisów
- Określenie samego atrybutu Disallow: bez wskazania ścieżki oznacza dostęp do wszystkich zasobów.
- Nie można zabronić dostępu do pliku robots.txt np. Disallow: /robots.txt – ten plik jest zawsze dostępny.
- Atrybut Allow nie został powszechnie zaakceptowany i nie jest zalecane jego stosowanie.
- Ścieżki dostępu nie mogą zawierać znaków globalnych, a znaki specjalne np. & muszą zostać zastąpione postacią szesnastkową np. %26.
- Zapis: Disallow: /dokument nie jest równoznaczny z zapisem: Disallow: /dokument/. Pierwszy z nich zabrania dostępu do katalogów, których nazwa zaczyna się lub składa ze znaków "dokument", np. "dokumenty", "dokument", "dokument.html", "dokumentalny.txt" itp. Dostęp do wszystkich wymienionych plików i folderów zostanie zablokowany dla robotów. Natomiast drugi wpis Disallow: /dokument/ oznacza zablokowanie dostępu tylko do katalogu /dokument/.
- W polach Sitemap zalecane jest stosowanie adresów bezpośrednich.

Znacznik meta w pliku HTML
Jednym z kolejnych zaleceń standardu jest podanie dyrektyw dla robotów w znacznikach HTML. Wspomnianą dyrektywę należy umieścić pomiędzy znacznikiem otwierającym <head>, a zamykającym </head>.

<meta name=„robots” content=„wartość”>, gdzie content może przyjmować następujące wartości, zgodne ze standardem konsorcjum W3C:
- index – indeksuj strony,
- all – jest równoznaczne z index i follow (podążaj za linkami na stronie),
- noindex – nie indeksuj strony,
- nofollow – nie podążaj za linkami na stronie.

Istnieje również powiązanie wartości noindex i nofollow poprzez zapisanie obu wartości po przecinku content=„noindex,nofollow”.

Odpowiedzialne i poprawne wykorzystanie pliku robots.txt daje szerokie możliwości konfiguracji witryny pod kątem pozycjonowania i indeksowania serwisów oraz witryn www przez wyszukiwarki internetowe. Oczywiście każdy webmaster musi zdać sobie sprawę z tego, że zbyt „agresywne” zastosowanie pliku robots.txt, może wiązać się z wieloma konsekwencjami i może zostać odebrane jako malware czy tzw. „bad bot”. Mam nadzieję, że zaprezentowane przykłady pozwolą w dowolny sposób skonfigurować plik robots.txt na waszych witrynach.

Na zakończenie powyższe przykłady: robots.zip.
Nie ponoszę odpowiedzialności za błędy i następstwa powstałe wskutek działania programu i kodu. Pobierasz i użytkujesz na własną odpowiedzialność.