Paginacja – co to jest i jak wpływa na pozycje w Google?

SEO
Dawid MedwediukDawid Medwediuk
Opublikowano: 11.08.2017
9 minut

Bardzo często powraca temat wytycznych SEO dla stronicowania np. kategorii w sklepie internetowym czy na blogu. Istnieje kilka szkół jak robić to dobrze, dlatego rozpatrzmy kilka przypadków jak obejść się z paginacją, by roboty wyszukiwarki nie miały z nią większych problemów.

Czym jest owa paginacja, czyli stronicowanie zasobów serwisu WWW

Paginacja to nic innego jak podział konkretnego zasobu w witrynie na poszczególne podstrony. Najprostszym przykładem mogą być kategorie w większości sklepów internetowych, gdzie po wylistowaniu określonej liczby produktów mamy możliwość przejścia do dalszej części listy produktów. Innym sposobem na prezentację produktów w kategorii jest paginacja typu “infinite scroll”, gdzie przewijając listing w dół, doładowuje nam się kolejna partia produktów. Nie inaczej ma się sprawa na blogach. Generalnie nie ma znaczenia jaki zasób strony WWW dzielimy na części, a raczej w jaki sposób to robimy i jak informujemy Googlebota o dalszej części tych treści.

Nie ograniczaj robota wyszukiwarki

Jednym z podstawowych błędów, który występuje przy stronicowaniu, to używanie tagów kanonicznych do pierwszej strony stronicowania. I o ile jest to uzasadnione w jednym przypadku użycia, to najczęściej jest to rozwiązane błędnie.

Skoro np. kategoria produktowa w sklepie jest podzielona na kilka podstron, to znaczy że na podstronie bazowej znajduje się określona liczba produktów, na podstronie drugiej kolejna partia innych produktów, i tak dalej aż do ostatniej strony paginacji.

Na podstronach paginacji:

https://nazwadomeny.com/kategoria-produktowa/strona-2
https://nazwadomeny.com/kategoria-produktowa/strona-3
https://nazwadomeny.com/kategoria-produktowa/strona-4

itd.

nie ma zatem większego sensu umieszczanie linków kanonicznych w postaci:

<link rel=”canonical” href=”https://nazwadomeny.com/kategoria-produktowa” />

gdyż jest to dalsza część oferty z danej kategorii, tak więc podstrony 2,3,4 itd. nie są duplikatami podstrony głównej (no chyba że jest inaczej, wtedy użycie canonicala jest uzasadnione).

Linki kanoniczne możemy oczywiście umieścić, ale do samych siebie. Czyli na podstronie https://nazwadomeny.com/kategoria-produktowa/ wstawiamy:

<link rel=”canonical” href=”https://nazwadomeny.com/kategoria-produktowa” />

a na podstronie https://nazwadomeny.com/kategoria-produktowa/strona-2 umieszczamy: <link rel=”canonical” href=”https://nazwadomeny.com/kategoria-produktowa/strona-2″ />

i tak dalej.

Strona zawierająca całą treść

Istnieje jednak pewien wyjątek – gdy posiadamy podstronę bazową zawierającą pełną treść, a dodatkowo podzieliliśmy ją na kilka podstron z mniejszą ilością treści, wtedy używanie canonicala ma sens. Jest to często spotykana praktyka przy dość długich artykułach z dużą ilością treści.

Zatem podstrony:

https://nazwadomeny.com/kategoria-produktowa/strona-1
https://nazwadomeny.com/kategoria-produktowa/strona-2
https://nazwadomeny.com/kategoria-produktowa/strona-3
https://nazwadomeny.com/kategoria-produktowa/strona-4

złożone w jedną sekwencję logiczną, zawierać będą w sumie pełną treść umieszczoną na podstronie bazowej https://nazwadomeny.com/kategoria-produktowa/ którą chcemy indeksować w wyszukiwarce.

Nieszczęsna pierwsza strona paginacji

Kolejnym, dość często spotykanym błędem, jest duplikacja strony bazowej kategoriihttps://nazwadomeny.com/kategoria-produktowa/ z pierwszą stroną stronicowania: https://nazwadomeny.com/kategoria-produktowa/strona-1

Jeżeli strona bazowa zawiera identyczną treść co /strona-1 to nie ma sensu tworzyć duplikatu – niektóre systemy CMS standardowo generują (oprócz podstrony bazowej) pierwszą stronę paginacji zaczynając od /strona-1, wtedy taki adres powinien zostać np. przekierowany 301 na stronę bazową, a w kodzie nie powinniśmy linkować do: https://nazwadomeny.com/kategoria-produktowa/strona-1 tylko do https://nazwadomeny.com/kategoria-produktowa/

W innym przypadku pojawi nam się problem przekierowań wewnętrznych, marnując w ten sposób budżet crawlowania przeznaczony przez Googlebota na crawlowanie serwisu. Innymi słowy, niepotrzebnie kierujemy go linkiem wewnętrznym przez 301, skoro można linkować bezpośrednio do podstrony docelowej z kodem statusu HTTP 200.

Atrybuty rel=”next” i rel=”prev”

Jeżeli zdecydowaliśmy się na stronicowanie jak poniżej:

https://nazwadomeny.com/kategoria-produktowa/
https://nazwadomeny.com/kategoria-produktowa/strona-2
https://nazwadomeny.com/kategoria-produktowa/strona-3
https://nazwadomeny.com/kategoria-produktowa/strona-4

to możemy wskazać robotowi wyszukiwarki relację między poszczególnymi stronami. Umieszczając w sekcjiodpowiednie linki z atrybutami relacji wskazujemy poszczególne podstrony sekwencji.

Na pierwszej (bazowej) stronie umieszczamy:

<link rel=”next” href=”https://nazwadomeny.com/kategoria-produktowa/strona-2″>

jako kolejną podstronę zawierającą dalszą część danego zasobu.

Na kolejnej podstronie, tj. https://nazwadomeny.com/kategoria-produktowa/strona-2 umieszczamy:

<link rel=”prev” href=”https://nazwadomeny.com/kategoria-produktowa/”>

<link rel=”next” href=”https://nazwadomeny.com/kategoria-produktowa/strona-3″>

Idąc dalej – na podstronie trzeciej tj. https://nazwadomeny.com/kategoria-produktowa/strona-3:

<link rel=”prev” href=”https://nazwadomeny.com/kategoria-produktowa/strona/strona-2 „>

<link rel=”next” href=”https://nazwadomeny.com/kategoria-produktowa/strona-4″>

Zakładając, że podstrona /strona-4 jest ostatnią w stronicowaniu, umieszczamy na niej:

<link rel=”prev” href=”https://nazwadomeny.com/kategoria-produktowa/strona-3″>

Jest to najczęściej spotykane użycie linków w headerze z atrybutami “rel next/prev”. Zdarzają się czasami atrybuty dodane do linków “w sekcji- im szybciej robot wyszukiwarki otrzyma wskazówkę, gdzie znajdzie dalszy ciąg zasobu, tym lepiej.

Oczywiście należy pamiętać, iż linki z atrybutami “rel next/prev” nie są bezwzględnymi dyrektywami, tj. mogą, ale nie muszą być brane pod uwagę podczas crawlowania serwisu. Dodatkowo adresy URL kolejnych podstron warto umieszczać w postaci bezwzględnej, choć w wytycznych Google (https://developers.google.com/search/docs/advanced/ecommerce/pagination-and-incremental-page-loading) znajdziemy zapis: “Wartościami mogą być URL-e względne lub bezwzględne”. Jeżeli natomiast znajdujemy się na podstronie z parametrami w URL-u, np. sortowania, wtedy również i one powinny znaleźć się w linkach “rel next/prev” – przykładowo podstrona:

https://nazwadomeny.com/kategoria-produktowa/strona-3&sort=desc

będzie zawierała takie linki w sekcji <head>:

<link rel=”prev” href=”https://nazwadomeny.com/kategoria-produktowa/strona-2&sort=desc”>

<link rel=”next” href=”https://nazwadomeny.com/kategoria-produktowa/strona-4&sort=desc”>

ale tag kanoniczny już do samej siebie (bez parametru sortowania malejąco):

<link rel=”canonical” href=”https://nazwadomeny.com/kategoria-produktowa/strona-3″/>

Indeksować czy nie?

Następnym problemem, jaki pojawia się przy temacie stronicowania, jest błędne użycie meta-tagów robots. Stanowisko Google jest takie:

“[…] poszczególne strony mają być traktowane jako sekwencja logiczna, co spowoduje uwzględnienie właściwości ich linków i w większości przypadków pozwoli wyświetlić użytkownikowi pierwszą stronę.”

Bardzo często można zauważyć, że poszczególne podstrony paginacji, mimo że są połączone linkami z atrybutami “rel next/prev”, znajdują się w indeksie wyszukiwarki. Jeżeli ktoś ma z tym problem, najlepszym sposobem będzie użycie:

<meta name=”robots” content=”noindex, follow” />

na kolejnych podstronach, tj. od /strona-2 wzwyż. Robot wyszukiwarki przebrnie po kolejnych linkach do końca paginacji, ale nie będzie ich indeksował.

A co z canonicalami w takim razie?

Z dyskusji z Johnem Muellerem (https://plus.google.com/+JohnELincoln/posts/TCJHwdZHdQc) wynika jasno, aby nie łaczyć meta-tagów robots “noindex” z canonicalami wskazującymi na indeksowalny URL. Czyli w tym przypadku, skoro umieszczamy canonicala na podstronie stronicowania do samej siebie, nie wstawiamy już meta-tagu robots z “noindex” i odwrotnie. Jeżeli umieszczamy canonicala do samej siebie, nie umieszczamy meta-tagu robots z “noindex”.

Nie zauważyłem problemów z crawlowaniem paginacji, gdzie wstawione były canonicale do samych siebie i meta-tag robots “noindex” – jednak Google chce samo decydować co indeksować, a co nie, więc może warto nie przeszkadzać w tym procesie.

Stronicowanie a sitemapa XML serwisu

Tutaj sprawa jest dość ciekawa, raczej nie wstawiamy do sitemap.xml adresów paginacji, jedynie bazowy adres np. kategorii lub głównego artykułu z pełną treścią. Z reguły w sitemapie XML zgłoszone powinny być te adresy, które chcemy zaindeksować, więc jeżeli nie zależy nam na indeksacji paginacji, nie umieszczajmy tam adresów od /strona-2 wzwyż. Oczywiście, jeśli blokujemy je meta-tagiem robots z “noindex” to tym bardziej sprawa jest jasna – nie wstawiamy.

Podstrony paginacji jako parametry

Jeżeli zależy nam na wsparciu indeksacji produktów/artykułów z samego końca stronicowania, nie ograniczajmy robotowi wyszukiwarki dostępu do podstron kategorii dalszych, niż tylko bazowa. Często zdarza się, że poszczególne podstrony oznaczane są parametrami “?page=” lub “?p=” i przez pomyłkę mogą zostać zablokowane w robots.txt wraz z innymi parametrami.

Podobnie ma się sprawa z parametrami w URL-ach w Google Search Console. Warto tam wskazać informację Googlebotowi, że owe parametry są odpowiedzialne za podział zasobów na podstrony i niech to on zdecyduje.

Opisy kategorii na paginacji

Częstą praktyką jest rozbudowa treści na kategoriach np. w sklepach internetowych. Często dodany opis pojawia się na wszystkich adresach stronicowania w niezmienionej formie. Jeżeli już traktujemy wszystkie podstrony jako logiczną sekwencję i łączymy w całość atrybutami “rel next/prev”, to wydaje się zbędne powielanie tego samego tekstu na podstronie /strona-2, /strona-3 itd.

Z produktami na listingu jest przecież podobnie, każda kolejna podstrona zwraca nowy zestaw produktów, a użytkownik nie chce raczej czytać w kółko tego samego opisu kategorii na każdej podstronie, tak samo jak nie chce oglądać tych samych produktów w dalszej części kategorii. Nasuwa się tylko pytanie – kto czyta opisy kategorii? Googlebot raczej tak, więc nie serwujemy mu duplikatów.

Infinite scroll – czy jest tu miejsce dla paginacji?

Okazuje się, że również w przypadku rozwiązania typu “infinite scroll”, gdzie przewijając listing produktów/artykułów w kategorii odkrywają nam się kolejne zasoby, znajdzie się sposób na stronicowanie. Całkiem sensowny przykład wskazał Johnem Mueller (http://scrollsample.appspot.com/items) gdzie w trakcie scrollowania listingu, do adresu URL doczepiane są kolejne parametry wskazujące na kolejne podstrony.

http://scrollsample.appspot.com/items?page=2
http://scrollsample.appspot.com/items?page=3

itd.

Oczywiście zastosowanie mają tu linki z atrybutami “rel next/prev”, a także wstawiony jest canonical do samej siebie, np. pod adresem http://scrollsample.appspot.com/items?page=5 sytuacja ma się następująco:

<link rel=”canonical” href=”/items?page=5″ />

<link rel=”next” href=”/items?page=6″/>

<link rel=”prev” href=”/items?page=4″/>

Paginacja elementem strategii indeksacji

Decyzja o zastosowaniu konkretnego rozwiązania dla stronicowania oczywiście pozostaje po Waszej stronie, nie zawsze opisane przykłady mogą zostać wdrożone, bo np. pojawiają się ograniczenia po stronie technicznej, funkcjonalności CMSa lub po prostu wynikają z przyjętej strategii indeksacji zasobów serwisu w wyszukiwarce. Warto jednak podjąć się optymalizacji paginacji na tyle, by przynajmniej nie przeszkadzać Googlebotowi w crawlowaniu serwisu, a dodatkowo wspomóc indeksację zakopanych podstron produktów/artykułów, do których nie tak łatwo podczas jednej krótkiej wizyty dotrzeć.

Podziel się tym postem:  
Dawid Medwediuk

Od 2011 roku związany z Search Engine Marketingiem. Pasjonat SEO, nowych technologii i gadżetów.