Każdy korzysta z pliku robots.txt na swoim serwerze, aby zarządzać stronami, folderami, subdomenami lub innymi wyszukiwarkami treści, które będą mogły indeksować lub nie. Dzisiaj przyjrzymy się szczegółowo nagłówkowi HTTP X-Robots-Tag, który może pomóc, ale również zaszkodzić Twojej witrynie.

Do czego służy plik robots.txt?

Zanim przejdziemy do nagłówka HTTP X-Robots-Tag, to na samym początku wyjaśnimy działanie pliku robots.txt. Wskazuje on wyszukiwarkom, aby nie indeksowały określonej strony, pliku lub katalogu Twojej witryny. Używa się do tego specjalnych dyrektyw robota, o których napisaliśmy poniżej. Korzystanie z tego pomaga zarówno Tobie, jak i wyszukiwarkom, takim jak Google. Nie zapewniając dostępu do pewnych, nieistotnych obszarów witryny, możesz zmniejszyć obciążenie serwera, a także nie generować zbyt wielu niepotrzebnych w indeksie stron.

Przykładowy plik robots.txt:

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php

Wyżej jest to wersja podstawowa na przykładzie strony Pixabay, plik może być również bardzo rozbudowany:

User-agent: *
Allow: /api/docs/
Allow: /static/*.*
Disallow: /static/
Disallow: /*/accounts/login/?
Disallow: /accounts/login/?
Disallow: /*/accounts/favorite/
Disallow: /*/accounts/follow*
Disallow: /accounts/follow*
Disallow: /*/accounts/messages/
Disallow: /*/blog/comments/
Disallow: /blog/comments/
Disallow: /*/feeds/
Disallow: /feeds/
Disallow: /*/forum/
Disallow: /forum/
Disallow: /*/images/tools/
Disallow: /*/images/comments/
Disallow: /*/images/download/*
Disallow: /*/videos/comments/
Disallow: /*/videos/download/*
Disallow: /newsletter/
Disallow: /get/
Disallow: /api/
Crawl-delay: 1
Allow: /

User-agent: 008
User-agent: MJ12bot
User-agent: sitebot
User-agent: dotbot
User-agent: AhrefsBot
User-agent: Ocelli
User-agent: sistrix
User-agent: ShopWiki
User-agent: WBSearchBot
User-agent: Riddlerbot
User-agent: linguatools
User-agent: www.integromedb.org/Crawler
User-agent: CCBot
Disallow: /

Należy pamiętać, że używanie pliku robots.txt do ukrywania całej witryny pod kątem wyszukiwarek zdecydowanie nie jest zalecane.

Czym jest X-Robots-Tag?

W 2007 roku Google ogłosił, że dodał obsługę dyrektywy X-Robots-Tag. Oznaczało to, że nie tylko można było ograniczyć dostęp do wyszukiwarek za pomocą pliku robots.txt, ale można było także programowo ustawić różne dyrektywy związane z robot.txt w nagłówkach odpowiedzi HTTP. A co z meta tagiem robots, czy nie byłoby prościej go używać zamiast X-Robots-Tag? Wszystko zależy od celu, w jakim chcesz zablokować stronę. Jeśli planujesz programowo blokować określoną stronę napisaną w języku HTML, wystarczy użyć meta tagu. Ale jeśli planujesz zablokować indeksowanie np. obrazu, możesz użyć do tego nagłówka HTTP, aby zrobić to w kodzie.

Istnieją dwa różne rodzaje dyrektyw: dyrektywy robota indeksującego i dyrektywy indeksatora.

Dyrektywy X-Robots-Tag

Należy rozróżnić, czym są dyrektywy robota, a czym dyrektywy indeksatora. Dyrektywy robota, czyli prościej wskazówki dla robotów to takie znaki informacyjne, gdzie robot indeksujący ma podążać. Czyli na co zezwalasz robotom wyszukiwarek, a na co nie.

Dyrektywy robota

Pierwsza z nich to Allow (dopuszczać/zezwalać) i tą dyrektywą określasz, gdzie robot ma się udać. Natomiast analogicznie Disallow (nie dopuszczać/zakazać), wskazuje w pliku, gdzie robot nie ma się poruszać. Czyli strony i pliku, które nie chcesz, aby były indeksowane w wyszukiwarkach. Pamiętaj, że Allow i Disallow zawsze występuje z dyrektywą User-agent (agent użytkownika).

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php

O czym należy pamiętać? Jeśli do witryny prowadzi wystarczająca liczba linków, to samo zdefiniowanie dyrektywy Disallow, nie będzie wystarczające. Dlatego pomaga w tym stosowanie X-Robots-Tag. Jeśli omawiamy dyrektywy robota, to warto jeszcze wspomnieć o Site map (mapa witryny), która pomaga wyszukiwarkom w szybszym opuszczaniu witryny i jeszcze szybszym indeksowaniu jej. Przykład:

Sitemap: https://www.example.com/my-sitemap.xml
Sitemap: https://www.example.com/sitemap.xml

W takiej postaci dodajemy mapę witryny do pliku robots.txt. Oczywiście z adresem własnej strony internetowej.

Dyrektywy indeksatora

Dyrektywy indeksatora to dyrektywy, które są ustawiane na podstawie strony i / lub elementu. Do lipca 2007 roku obowiązywały dwie dyrektywy: microformat rel = ”nofollow”, co oznacza, że ​​ten link nie powinien przekazywać uprawnienia / PageRank, oraz tag Meta Robots. Prościej, jest to informacja dla robota, że link nofollow nie jest ważny i robot nie ma za nim podążać.

Ten sam wynik można osiągnąć za pomocą nagłówka HTTP X-Robots-Tag. Jak opisano wcześniej, X-Robots-Tag zapewnia większą elastyczność, umożliwiając również kontrolowanie sposobu indeksowania określonych plików (typów). Należy jednak uważać, bo można zablokować sobie całą witrynę. Jeśli masz problem z wgraniem site mapy np. do Google Search Console, a w komunikacie zobaczysz X-Robots-Tag „noindex” oznacza to, że masz zablokowane indeksowanie witryny i należy zmienić tag nagłówka.

Przykładowe zastosowania X-Robots-Tag

Blokowanie plików wygenerowanych w PHP robotom wyszukiwarek, za pomocą dyrektyw dodanych do pliku header.php, czyli nagłówka:

header("X-Robots-Tag: noindex", true);

W powyższej konfiguracji roboty nadal mogą podążać za linkami na Twojej stronie, żeby to zmienić wystarczy dodać dyrektywę indeksatora nofollow (nie podążać). Wtedy reguła będzie wyglądać następująco:

header("X-Robots-Tag: noindex, nofollow", true);

Chociaż używanie tej metody w PHP ma swoje zalety, najprawdopodobniej będziesz chciał całkowicie zablokować określone typy plików.

Bardziej praktyczne będzie dodanie X-Robots-Tag do konfiguracji serwera Apache lub pliku .htaccess.


Jeśli Twoja strona ma dodatkowe pliki w różnych formatach np. doc, a nie chcesz, aby wyszukiwarki indeksowały ten typ pliku z określonego powodu, to na serwerach Apache należy dodać następujący wiersz do pliku konfiguracyjnego lub pliku .htaccess:

<FilesMatch ".doc$">
Header set X-Robots-Tag "noindex, noarchive, nosnippet"
</FilesMatch>

A, jeśli chcesz to zrobić dla plików .doc i .pdf:

<FilesMatch ".(doc|pdf)$">
Header set X-Robots-Tag "noindex, noarchive, nosnippet"
</FilesMatch>

Jeśli używasz Nginx zamiast Apache, możesz uzyskać podobny wynik, dodając następujące elementy do konfiguracji serwera:

location ~* \.(doc|pdf)$ {
    add_header  X-Robots-Tag "noindex, noarchive, nosnippet";
}

W niektórych przypadkach w wynikach wyszukiwania może pojawić się sam plik robots.txt. Korzystając ze zmiany poprzedniej metody, możesz zapobiec temu w swojej witrynie:

<FilesMatch "robots.txt">
Header set X-Robots-Tag "noindex"
</FilesMatch>

Nginx:

location = robots.txt {
    add_header  X-Robots-Tag "noindex";
}

Jak widać nagłówek HTTP X-Robots-Tag jest bardzo potężnym narzędziem. Używaj go mądrze i ostrożnie, ponieważ nie będziesz pierwszym, który przypadkowo zablokuje całą witrynę. Na szczęście jest to odwracalne, także nie bój się i próbuj!