Třeba:
- registrační stránku
- košík eshopu
- přihlášení do administrace
- detail uživatelského účtu
- atd.
Jak ale vysvětlit majiteli eshopu, že když se nějaká kategorie rozpadne na 10 stránek, měl by usilovat o to, aby v indexu byla ta první, ale ostatní ne? V tomto bodě se pořád potýkám s touhou klienta mít prostě všechno v indexu.
Trocha teorie na úvod
Co je to vlastně stránkování? No pokud je v kategorii (dejme tomu pánská trička) třeba 200 produktů, bude pro uživatele lepší, když se jich zobrazí jen 20. Zároveň se vygenerují odkazy na další stránky, na nichž je dalších 20 produktů. To normálně známe všichni. Představ si jaké by to bylo, kdybys musel čekat, až se stáhne všech 200 obrázků, textů a všechno se to ještě musí vykreslit. To vydrží málokdo.
Kdyby ses měl rozhodnout, na kterou stránku přivést uživatele, který zadá "pánské triko", jaké by měla pořadí? Mě by napadlo, že logická je první stránka ve výpisu. Z ní ať si uživatel postupně kliká na další. Vlastně není důvod, přivádět uživatele na jinou, než první stránku výpisu.
Ovšem pokud je v indexu vyhledávačů zaindexováno všech 10 očíslovaných stránek kategorie pánská trička, pak se Google klidně rozhodne, že ti uživatele pošle na stranu 4. Přičemž úskalí je hned několik:
- produkty se mnohdy přesouvají z jedné pozice na druhou buď v důsledku řazení, nebo prostě přibývají či jsou naopak odstraňovány (což mimochodem nedoporučuji)
- vyhledávače nevidí moc velké rozdíly mezi stránkami, které se často liší jen tím, že v titulku je číslo ze stránkování
- zbytečně se vyčerpává tzv. Crawl Budget. Vyhledávače mají totiž přidělený jen omezený čas na procházení a indexaci webu. Pokud ho vyplýtvají na stránkovaný výpis, nemusí se na důležitější stránky ani dostat řada
Snad se shodneme na tom, že od druhé stránky nějakého výpisu opravdu nechceme, aby se dostaly do indexu.
Jak správně ošetřit stránkování z hlediska SEO
Stránkování je prostě nutné řešit. Problém je, že se vyhledávače mezi sebou ještě nedomluvily na jednotném postupu. Google se logicky nebude ptát Seznamu, jestli souhlasí s jeho návrhem řešení. Ten to prostě nějak vymyslel a Seznam musí reagovat.
Řešení pro Google
Výhodou je jednoduchost nasazení. Do každého odkazu, který míří na další stránku ve výpisu, stačí přidat rel="next"
a do odkazu, který míří na předchozí stránku výpisu zase přidat rel="prev"
.
Je to fakt snadné nasadit, jelikož stačí jen vědět, že jsem na první stránce a pak nedávám ten prev, případně na poslední naopak nedám next. Hotovo.
Pardon - není to hotovo. Funguje to jen v tom Google a Seznam to zatím ignoruje. Dokonce nějak ani neříkají, že by to začali podporovat :-(
Řešení pro Seznam
U Seznamu fungují hned další řešení. Bohužel, každé z nich si s sebou nese jisté nevýhody.
Kanonizace
Myšlenkou kanonizace je, že vyhledávačům sice přiznáme, že stránka existuje, ale domluvíme se s nimi, že upřednostňujeme jinou. Prostě na každou stránku, včetně té první, se vloží metatag, který bude ukazovat na první stránku výpisu. Například:
<link rel="canonical" href="https://www.eshop.cz/panska-trika">
Smutný ještě je, že kanonizace je jen pokorná žádost k vyhledávačům, které to mohou vesele ignorovat :-)
Všechno na jednom místě
Další možnost je, že vznikne jedna stránka, která bude opravdu vypisovat všechny produkty ze všech stránek výpisu a tu prohlásíme za kanonickou. Je to sice z hlediska SEO o něco správnější než přesměrování na běžnou první stránku výpisu, ale já takové stránky moc rád nemám. Tedy jako uživatel. Drtí mě ta čekací doba a ani nemám rád, když scrolluji dolů, abych se podíval do patičky na kontakty a ony se mi tam pořád javascriptem dopisují další produkty. Přitom ani nevím, kolik jich nakonec bude.
Zákaz indexace
Tohle je poslední způsob jak vyřešit stránkování. Prostě jen zakážeme indexaci všech stránek výpisu kromě první. Stačí obyčejný meta tag:
<meta name="robots" content="noindex, follow">
Pozor - není tam nofollow, ale naopak follow. My totiž sice nechceme do indexu dostat x-tou stránku výpisu, ale chceme, aby na ně roboti lezli a procházeli je. Budou tam třeba nové produkty, které nikde jinde neodkazujeme, tak ty, ať se do indexu určitě dostanou že?
Všichni (až na kozy) ať jsou spokojení
Máme tedy řešení jak pro Google, tak pro Seznam. Problém je, že Google doporučuje nemíchat různé způsoby. A ani prakticky to není dobrý nápad - složité struktury mají tendenci generovat více chyb. Pokud jsi zkoušel nasadit kvůli Seznamu meta noindex, tak to Google spolu s next/prev prostě nemá rád a veřejně to říká.
Jak to tedy udělat, ať se všichni vlci nažerou? Co se týče koz, tak ty mají smůlu - vlci slámu nežerou.
- v každém případě je dobré nasadit řešení next/prev. Pro Google to stačí a Seznam to ignoruje
- pak zaúkoluj programátora, aby na stránky č. 2 a další, vložil metatag robots s noindex, ale jen v případě, že si stránku prohlíží SeznamBot.
Jak zjistit návštěvu SeznamBota je celkem snadné. V PHP by to mohlo být třeba:
if(strstr(strtolower($_SERVER['HTTP_USER_AGENT']), "seznambot"))
{
$isSeznam = true;
}
Pak v šabloně můžeš reagovat na proměnnou a buď ten metatag vypsat, nebo ne.
Komentáře