Indexace velkých webů

Proč se velké weby indexují obtížně: souboj mezi crawl budgetem a entropií URL

Čím větší web, tím vyšší pravděpodobnost, že se z něj stane labyrint pro roboty. Nastává tlak na crawl budget, exploduje počet variant URL, vznikají crawl traps (pasti) a při špatné kanonikalizaci se rozleze tzv. canonical peklo – nekonzistentní signály, které způsobí rozpad autority a roztříštěnou indexaci. Cílem technického SEO je snížit entropii URL, stabilizovat signály a nasměrovat crawlery k hodnotným dokumentům co nejefektivněji.

Anatomie crawl budgetu: kapacita, priorita a odpad

  • Kapacita: kolik URL je robot schopen denně prohledávat při daném výkonu serveru a historii odezev.
  • Priorita: které URL robot chce navštívit na základě interních odkazů, sitemap, externích odkazů a historické hodnoty.
  • Odpad: vše, co spotřebovává rozpočet bez přínosu – duplicity, filtry, nekonečné kalendáře, session parametry, stránky s nekonverzní nízkou hodnotou.

Optimalizace velkého webu spočívá v kombinaci omezování generování URL, správné signalizace (robots, meta, canonical, hreflang) a výkonu (rychlé 200, správné 304, cache).

Crawl traps: typologie a jejich neutralizace

  • Fasetové filtry: nekonečné kombinace parametrů (?barva=modra&velikost=44&sort=cena_desc). Řešení: allowlist parametrů, interní odkazy jen na povolené kombinace, ostatní noindex, follow a bez odkazů v HTML; generovat přehledové landing stránky pouze pro komerčně hodnotné fasety.
  • Kalendáře a nekonečné stránkování: URL tvořené daty (/2025/10/21/) nebo „Další“ bez konce. Řešení: limit stránkování (např. do 20), archivní seznamy seskupit po měsících, noindex pro hluboké stránky.
  • Session a tracking parametry: ?utm=, ?gclid=, ?sessionid=. Řešení: stripping parametrů na serveru, canonical na čistou URL, nepoužívat tyto URL v interním linkování ani v sitemapách.
  • Sort/Order permutace: ?sort=, ?order=. Řešení: jediná „default“ verze indexovatelná, ostatní noindex, follow.
  • Infinite scroll: generuje požadavky bez pevné URL struktury. Řešení: progresivní degradace – paralelní stránkované URL (?page=2) a interní odkazy na ně.
  • Duplicitní path aliasy: /produkt/kolobezka a /sk/produkt/kolobezka/. Řešení: striktně vynutit jediný kanonický path (301 + canonical).

Canonical peklo: když signály mluví proti sobě

„Canonical“ je doporučení, nikoli příkaz. Při konfliktech vyhledávače obvykle důvěřují internímu linkování, hreflang párům a konzistenci. Mezi nejčastější chyby patří:

  • Kanonika na neindexovatelnou URL: <link rel="canonical" href=".../a">, ale /anoindex nebo 3xx/4xx status. Výsledek: ignorování nebo výběr jiné kanoniky.
  • Paginated → page 1 canonical: každá stránka stránkování ukazuje na ?page=1, čímž mizí obsah z ?page=2..n z indexu. Řešení: stránkované strany mají self-canonical, nebo jsou noindex a agregované landingy zachycují long-tail.
  • Konflikt hreflang a canonical: hreflang odkazuje mezi jazyky, ale canonical ukazuje na jiný jazyk nebo jiný path. Řešení: hreflang páry musí směřovat na kanonické URL stejné verze.
  • Cross-domain canonical bez vlastnictví: news syndikát dává canonical na partnera, ale interní odkazy vedou na vlastní kopii. Výsledek: fragmentace autority.
  • Řetězení a smyčky: A canonical → B, B canonical → C nebo A ↔ B. Řešení: přímé self-canonical, žádné řetězce ani cykly.
  • Nekonzistentní normalizace: www vs. non-www, http vs. https, trailing /, velká písmena v path. Řešení: 301 vynucení, jednotná kanonika, interní linky pouze v jednom tvaru.

Pravidla normalizace URL pro velké weby

  1. Protokol: vždy https, vynucené 301 + HSTS.
  2. Host: jeden hlavní host (např. www), ostatní 301.
  3. Path: trailing slash dle konvence (konzistentně), malá písmena, diakritika normalizována, žádné duplicitní lomítka.
  4. Parametry: pevná allowlist; pořadí parametrů standardizované; nepotřebné stripping.
  5. Self-canonical: každá indexovatelná URL deklaruje sama sebe, výjimky pouze tam, kde skutečně existuje nadřazená verze.

Robots řízení: robots.txt, meta robots a HTTP hlavičky

  • robots.txt: blokování crawl trapů, ale ne indexování již nalezených URL. Vhodné pro masově generované patterny (/vyhledavani*, /*?sort=).
  • Meta robots: noindex, follow pro sekundární varianty (třídění, hluboké stránky stránkování, nízkohodnotné filtry).
  • X-Robots-Tag: na úrovni hlaviček pro binární soubory, exporty, feedy (noindex).
  • Disallow ≠ Noindex: zablokované URL může zůstat v indexu jako „označená“. Pro jistotu používejte noindex, pokud chcete vyloučit z indexu.

Výkon a cache: zrychlení crawl-u bez ztráty obsahu

  • Stabilní 200 s TTFB < 200 ms na klíčových šablonách (listy, detail). Rychlé odpovědi zvyšují „crawl rate limit“.
  • HTTP 304 s ETag/Last-Modified pro statické i HTML, aby se šetřilo na re-crawlech.
  • Správné 4xx/5xx: 410 pro trvalé smazání, 404 pro neexistující; 503 + Retry-After při údržbě, jinak riskujete snížení crawl rate.
  • CDN a edge caching: konzistentní cache politika, ale pozor na variace podle query parametrů.

Sitemapy pro obří weby: segmentace a zdravé signály

  • Index sitemap a tematická segmentace (produkty, články, lokality, jazykové verze).
  • max 50k URL / 50 MB na jednu sitemapu; rotace a regenerace pouze při změnách.
  • <lastmod> pouze pokud skutečně došlo k relevantní změně obsahu, nikoli při cenové drobné aktualizaci.
  • Jen kanonické, indexovatelné URL; žádné noindex, žádné 3xx/4xx/5xx.

JavaScript a renderování: parity a hydratační pasti

  • SSR/SSG pro kritické šablony, aby se obsah a odkazy objevily již v prvotním HTML.
  • Odkazy v HTML: interní odkazy musí být v DOM bez potřeby interakce; neukládejte navigaci pouze na onclick.
  • Lazy content: při lazy loadi zajistěte zpřístupnění i pro crawler (noscript fallback, prerender pro důležité boxy).
  • Facety a JS: filtrační UI generuje URL s povolenými parametry; nezatahujte crawler do nekonečných kombinací.

Stránkování, archivy a sběr long-tailu

  • Self-canonical na stránkovaných stránkách a silné interní odkazy na obsahové „huby“ místo indexace hlubokých stránek.
  • Alternativa k rel=prev/next: jasné interní odkazy (první / poslední / konkrétní stránka), přehledové landingy s konsolidovaným obsahem.
  • Noindex pro hluboké stránky (>5), pokud nepřinášejí unikátní poptávku, ale ponechte follow pro přenos autority.

Hreflang ve velkém: symetrie a kanonika

  • Symetrické páry: každý jazyk odkazuje na ostatní a sám na sebe (x-default pro globální verzi).
  • Konzistence s canonical: hreflang vždy na kanonické URL odpovídajícího jazyka.
  • Rozdělení sitemap: hreflang anotace v sitemapách škálují lépe než v HTML při velkém objemu.

Logy serveru: nejpřesnější barometr crawl zdraví

  • Podíl 200 vs. non-200 pro Googlebot/Bingbot – cílem je minimalizovat 5xx a 404.
  • Top waste patterns: regulární výrazy identifikující nejčastější zbytečné cesty/parametry.
  • Re-crawl frekvence: důležité URL by měly být re-crawlovány v horizontu dnů, nikoli měsíců.

Diagnostika canonical pekla: checklist

  1. Je na stránce self-canonical a cíl vrací 200/indexovatelný status?
  2. Neexistují řetězce nebo smyčky v kanonikách?
  3. Interní odkazy směřují na stejný tvar URL jako canonical?
  4. Hreflang a canonical ukazují na stejnou verzi v rámci jazyka?
  5. Parametrické a třídící stránky mají noindex, follow a nejsou v sitemapách?
  6. Stránky s stránkováním: self-canonical, nebo úmyslné noindex s obsahovou alternativou?

Implementační vzory pro CMS a edge logiku

  • URL normalizer middleware: přepíše velká písmena, odstraní duplicitní lomítka, seřadí parametry, 301 na kanonický host/protokol.
  • Param allowlist: server povolí indexovatelné kombinace, ostatní vrátí noindex a omezené interní odkazy.
  • Content API s „indexable“ příznakem: šablony renderují meta tagy a canonical dle stavu dokumentu.
  • Sitemap builder: generuje jen 200/indexovatelné/self-canonical URL s reálným lastmod.

Politika produktových a listovacích stránek

  • Detail produktu: jediná kanonická URL; varianty (barva/velikost) jako atributy na stránce nebo povolené fasety, nikoli jako samostatné indexovatelné URL, pokud nemají samostatnou poptávku.
  • Kategorie: default bez parametrů indexovatelný; kombinované fasety pouze ty, které přinášejí poptávku a mají unikátní obsah (H1, úvod, FAQ, interní odkazy).

Škálování validace: automatické testy

  • Test 3xx/4xx/5xx v sitemapách: build fail, pokud se objeví.
  • Canonical-self test: pokud je canonical jiný než self a není v allowlistu, build fail.
  • Hreflang-symetrie: audit při deployi.
  • Parametrické odkazy v HTML: linter zachytí neautorizované parametry v interních odkazech.

Rozhodovací matice: indexovat, noindexovat, disallowovat nebo 301?

Situace Doporučená akce Poznámka
Duplicitní path (www/non-www, http/https) 301 + self-canonical Interní odkazy vždy na cílový kanonický host/protokol.
Sort/Order parametry noindex, follow + self-canonical Neuvádět v sitemapách, nepropagovat interními odkazy.
Nežádoucí faset noindex, follow nebo Disallow Disallow šetří crawl, ale neodstraní z indexu již známé URL.
Trvale smazaný obsah 410 Rychlejší odindexování než 404.
Přesunutý obsah 301 Zachování signálu a odkazové hodnoty.
Dočasně nedostupné 503 + Retry-After Chrání crawl budget během výpadku.

Měření úspěchu: KPI technické indexace

  • Coverage zdraví: poměr Valid (Indexed) vs. Excluded a Error.
  • Share of Crawl to Canonicals: procento crawl