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 fragmentu <meta name=”robots” content=”noindex, nofollow” />. Gdzie zamiast noindex, nofollow może znajdować się dowolna kombinacja ich dwojga, zależnie od tego co planujemy osiągnąć. Popularne CMS-y pozwalają oczywiście na zarządzanie tymi tagami automatycznie. Dla przykładu w WordPressie mamy od tego wtyczkę YOAST:

Yoast ustawienie NOINDEX w meta robots

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

Jednym kliknięciem możemy 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-meta.

x-robots-tag

Dyrektywę x-robots-tag należy dodać 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 za 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";
}

Jak widać są różnice między składnią Nginx i Apache, 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 dopasować do 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ązanie 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 cyfry ciąg znaków, literę X, kolejny 2 lub 3 cyfrowy ciąg znaków i slash. Taka bardzo 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:

https://regexr.com/ – edytor i tester wyrażeń regularnych online

Sprzeczne dyrektywy x-robots-tag i metatag robots

Powstaje w tym miejscu 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

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 taka 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.

noindex wtyczka 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

Podglądając kod należy jednak pamiętać o tym, że nie znajdziemy tutaj efektów działania x-robots-tag

Z poziomu Google Search Console badając adres URL

Google Search Console test  metatag robots NOINDEX

Sprawdzenie adresu za pomocą Google Search Console

Google Search Console test  metatag robots NOINDEX

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 ono działać, prawdopodobnie coś zostało źle wdrożone.

Które narzędzia sprawdzą się do sprawdzenia czy NOINDEX działa:

GSCLink Redirect TraceKod strony
Metatag RobotsTAKTAKTAK
x-robots-tagTAKTAKNIE

Do przeczytania

Dodaj komentarz

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