NOINDEX – metatag robots VS x-robots-tag


Metatag robots

Metatag robots to miejsce wykorzystywane przez webmasterów i specjalistów SEO najczęściej w celu przydzielania adresom URL tagu NOINDEX i NOFOLLOW. Jest to fragment kodu w sekcji <head>:

<!DOCTYPE html>
<html><head>
<meta name="robots" content="noindex" />
(…)
</head>
<body>(…)</body>
</html>

Metody dodawania metatagu robots

Celem jest umieszczenie w kodzie następującego fragmentu <meta name=”robots” content=”noindex, nofollow” />. Podstawowymi i najczęściej używanymi dyrektywami są index/noindex oraz follow/nofollow, w szczególnych wypadkach można wykorzystać inne, które też są wpierane przez Google.

Dokumentacja Google

Popularne CMS-y pozwalają na zarządzanie tymi tagami automatycznie. Dla przykładu w WordPressie służy do tego wtyczka YOAST:

Yoast ustawienie NOINDEX w meta robots
Globalne ustawienie dla wszystkich tagów w YOAST

Analogicznie w innych CMS-ach, zazwyczaj jest to podmenu “ustawienia SEO” lub funkcjonalność dodatkowych wtyczek/modułów.

Jednym kliknięciem można nadać NOINDEX wszystkim tagom, wszystkim wpisom, wszystkim archiwom itd. Jednakże w wielu wypadkach CMS nie pozwoli dopasować tych tagów w stopniu wystarczającym:

  1. niszowy lub autorski CMS może być całkowicie pozbawiony takich funkcji
  2. zarządzanie stronami do NOINDEX może być zbyt mało szczegółowe, np. w e-commerce zastosowanie tagu NOINDEX dla wybranych parametrów URL powiązanych z sortowaniem lub innymi parametrami (?sort=, ?price= itp.)
  3. jeśli CMS sklepu jest spersonalizowany bez uwzględnienia potrzeb SEO, może zdarzyć się, że “wyklikanie” ustawień w panelu nie przekłada się na kod strony.

W takich sytuacjach ratunkiem może być x-robots-tag.

x-robots-tag

Dyrektywę x-robots-tag dodaje się z poziomu konfiguracji serwera, a nie kodu HTML danej strony. Dlatego jeśli z różnych przyczyn nie ma możliwości zmiany metatagu robots w kodzie HTML lub skala jest zbyt duża żeby robić to ręcznie, pozostaje skorzystać z x-robots-tag. Na serwerach Apache dyrektywę należy dodać do pliku .htaccess, na serwerach Nginx do głównego pliku .conf. Poniżej przykład ze specyfikacji Google:

Apache x-robots-tag przykład

<Files ~ "\.pdf$">
  Header set X-Robots-Tag "noindex, nofollow"
</Files>

Nginx x-robots-tag przykład

location ~* \.(png|jpe?g|gif)$ {
  add_header X-Robots-Tag "noindex";
}

Między składnią Nginx i Apache są różnice, ale rezultat pozostaje ten sam. Powyższy fragment kodu przyzna wszystkim plikom .pdf oznaczenie noindex i nofollow. Bardzo ważne z punktu widzenia SEO jest to, że przydzielając NOINDEX za pomocą x-robots-tag można skorzystać z wyrażeń regularnych aby dopasować nawet tysiące adresów jedną linijką kodu.

Wyrażenia regularne w x-robots-tag

x-robots-tag wspiera dopasowania do ciągów znaków zapisane w formie RegEx (wyrażeń regularnych). Innymi słowy, kluczowe jest znalezienie wspólnego mianownika dla wszystkich adresów które chcemy oznaczyć dyrektywą NOINDEX. Poniżej dwa przykłady – podstawowy i zaawansowany:

Noindex dla wybranych parametrów URL

RewriteCond %{QUERY_STRING} (?dir=|?order=|?sort=|?limit=|?query=|?q=)
RewriteRule .* - [E=NOINDEX_HEADER:1]
Header set X-Robots-Tag "noindex, nofollow" env=REDIRECT_NOINDEX_HEADER

Powyższy kod przyzna nagłówek NOINDEX wszystkim adresom URL zawierającym wskazane w alternatywach (znacznik “|” ) parametry URL. W praktyce – wszystkim adresom URL które zawierają wskazane ciągi znaków.

Noindex dla katalogów zawierających rozmiary

RewriteCond %{QUERY_STRING} \-[0-9]{2,3}x[0-9]{2,3}\/
RewriteRule .* - [E=NOINDEX_HEADER:1]
Header set X-Robots-Tag "noindex, nofollow" env=REDIRECT_NOINDEX_HEADER

Przykład zaczerpnięty z serwisu nad którym pracowałem. Autorski CMS generował duplikacje produktów i kategorii poprzez dokładanie filtra rozmiarów do adresów URL. Adresy URL zawierały wtedy wybrany rozmiar, który był dodany po przecinku. Wymiary były 2 i 3 cyfrowe i zawsze po wymiarze był slash. Przykład:

domena.pl/kategoria-50×200/produkt.html

Niezbędne okazało się oznaczenie wszystkich tych adresów tagiem NOINDEX (z różnych przyczyn technicznych inne rozwiązania nie wchodziły w grę – canonicale, przekierowania itp.). Powstała zatem reguła która dodawała NOINDEX do adresów zawierających ciąg znaków zaczynający się od myślnika, następnie zawierający 2 lub 3 cyfrowy ciąg znaków, literę X, kolejny 2 lub 3 cyfrowy ciąg znaków i slash. Tego typu konkretna reguła zabezpiecza nas przed nadawaniem tagu NOINDEX adresom przypadkowym, które nie powinny się w tej puli znaleźć. Samo wyizolowanie np. myślnika po którym następują cyfry, mogłoby przypadkiem wyindeksować produkty. Starczyłby produkt o nazwie “odkurzacz GHV-400”. Do nauki i testowania wyrażeń regularnych polecam:

Regexr.com – edytor i tester wyrażeń regularnych

Sprzeczne dyrektywy x-robots-tag i metatag robots

Powyższe rozważania stawiają bardzo ważne pytanie – co jeśli dyrektywy w tych dwóch miejscach są sprzeczne?

metatag robots x-robots-tag rezultat w GSC
indexnoindexnoindex
noindexindexnoindex
noindexnoindexnoindex
Finalny efekt różnych konfiguracji dyrektyw

Test przeprowadzony został na bazie analizy konkretnych adresów w Google Search Console. Wbrew obiegowym opiniom nie jest tak że:

  • metatag robots nadpisuje x-robots tag
  • dyrektywa INDEX zawsze nadpiszę NOINDEX

Dyrektywa uznana przez Google, to będzie zawsze ta ograniczająca indeksowanie, niezależnie w jaki sposób została wdrożona.

Tyczy się to zarówno NOINDEX jak i NOFOLLOW.

Co to oznacza w praktyce?

W pierwszej kolejności zawsze najlepiej szukać rozwiązania w kodzie HTML czyli w metatag robots. Dobrym pierwszym krokiem będzie przeanalizowanie odpowiedzi na poniższe pytania:

  • Czy mój CMS pozwoli mi wprowadzić zmiany automatycznie?
  • Jeśli nie, to czy skala zmian jest tak mała, że mogę wprowadzić je w kodzie ręcznie?

Jeśli tak, nie ma potrzeby korzystać z x-robots-tag. Natomiast jeśli nie, rozwiązania problemu należy szukać w pliku .htaccess poprzez ręczną konfigurację dyrektywy i wyrażeń regularnych.

Jak przetestować zmiany

Niezależnie od wybranej metody warto przetestować czy tagi NOINDEX i NOFOLLOW działają:

Z poziomu przeglądarki wtyczką lub podejrzeniem kodu

Świetną wtyczką do sprawdzania kodów odpowiedzi serwera i meta tagów jest Link Redirect Trace.

meta robots i x-robots-tag wtyczka link redirect trace
Link Redirect Trace

Wtyczka Link Redirect Trace

Ikonka wtyczki pokazuje wykrzyknik gdy wykryje jakieś przeszkody w indeksowaniu (meta tag robots, robots.txt, x-robots-tag), a po kliknięciu i rozwinięciu okienka podaje szczegóły, czyli jaka konkretnie jest to dyrektywa i skąd się wzięła. Metodą ręczną, nie wymagającą instalacji wtyczki, będzie podejrzenie kodu strony (ctrl+u) i wyszukanie frazy NOINDEX.

metatag noindex w kodzie html
noindex w kodzie HTML

Podglądając kod należy jednak pamiętać o tym, że nie znajdują się tutaj efekty działania x-robots-tag. Dyrektywa x-robots-tag serwowana jest przez HTTP headers, ich zawartość można podejrzeć za pomocą narzędzia “Zbadaj” w przeglądarce Chrome.

  1. Naciśnij F12 aby otworzyć narzędzie deweloperskie w Chrome
  2. Wczytaj/odśwież stronę którą chcesz sprawdzić
  3. Wybierz zakładkę “network”
  4. Z listy wczytanych elementów wybierz adres URL danej strony
  5. W oknie ze szczegółami wybierz zakładkę “headers”
  6. Rozwiń listę “response headers” i szukaj atrybutu “x-robots-tag”.
HTTP response headers - x-robots-tag
x-robots-tag znajduje się w Response Headers

Jeśli wszystko działa prawidłowo, ustawiona wcześniej dyrektywa powinna być widoczna, np.
x-robots-tag: noindex

Z poziomu Google Search Console badając adres URL

Google Search Console test metatag robots i x-robots-tag

Sprawdzenie adresu za pomocą Google Search Console

Google Search Console test metatag robots i x-robots-tag
w GSC widać źródło dyrektywy

W polu Czy indeksowanie jest dozwolone znajduje się odpowiedź czy Google widzi dyrektywy NOINDEX które chcemy nadać danemu adresowi. Jeśli zmiany zostały dopiero wprowadzone, wersja znajdująca się w indeksie Google na pewno jeszcze ich nie uwzględnia, w takim wypadku należy wysłać prośbę o zindeksowanie i następnie przejrzeć test wersji opublikowanej. Jeśli w wynikach testu wersji opublikowanej nie widać blokady indeksowania, nie będzie ona działać.

Które narzędzia wykorzystać do sprawdzenia czy NOINDEX działa:

GSCLink Redirect TraceKod stronyChrome “zbadaj”
Metatag RobotsTAKTAKTAKTAK
x-robots-tagTAKTAKNIETAK
x-robots-tag nie znajduje się w kodzie strony

Do przeczytania

Dokumentacja Google

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *