Technické SEO pro vývojáře: co musí web splňovat
Title a meta description, kanonické URL, robots.txt, sitemap, strukturovaná data, renderování JavaScriptu a hreflang. Technické SEO prakticky a s kódem.
O obsahu a klíčových slovech rozhoduje marketing. To, jestli vyhledávač stránky vůbec najde, pochopí a správně zaindexuje, je ale práce vývojáře. Tady je přehled technických věcí, které musí web splňovat, s konkrétním kódem.
Hlavička každé stránky
<!doctype html>
<html lang="cs">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Ruční kávovar V60 – návod na přípravu | Kavárna Zrnko</title>
<meta name="description" content="Jak připravit kávu ve V60: poměr kávy a vody, hrubost mletí, teplota a postup krok za krokem.">
<link rel="canonical" href="https://www.zrnko.cz/navody/v60">
</head>
<title>– unikátní pro každou stránku, nejdůležitější informace na začátku. Ve výsledcích se zobrazí zhruba 50–60 znaků.meta description– Google ho nemusí použít, ale často ho zobrazí jako úryvek. Unikátní, kolem 150 znaků, vystihuje obsah.lang– pomáhá s určením jazyka.meta keywordsGoogle ignoruje, nemusíte ho psát.
Kanonická URL
Stejný obsah bývá dostupný na více adresách: s www i bez, s lomítkem na konci i bez, s parametry ?utm_source=… nebo ?sort=price. rel="canonical" říká, která adresa je ta hlavní.
Kromě toho sjednoťte adresy přesměrováním 301 na serveru. Nginx – přesměrování na HTTPS a variantu s www:
server {
listen 80;
listen 443 ssl;
server_name zrnko.cz;
# ssl_certificate … (certifikát pro zrnko.cz)
return 301 https://www.zrnko.cz$request_uri;
}
robots.txt
User-agent: *
Disallow: /admin/
Disallow: /kosik
Disallow: /*?sort=
Sitemap: https://www.zrnko.cz/sitemap.xml
Pozor na dvě časté chyby:
Disallownezabrání indexaci – zakáže jen procházení. Stránka se může ve výsledcích objevit, pokud na ni vedou odkazy. Pro vyřazení z indexu použijte<meta name="robots" content="noindex">a stránku v robots.txt neblokujte, jinak robot noindex nikdy nepřečte.- Zapomenuté
Disallow: /z testovacího prostředí po nasazení do produkce. Kontrolujte to v deploy procesu.
Testovací prostředí raději chraňte heslem (HTTP Basic Auth) – je to spolehlivější než robots.txt.
Sitemap
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://www.zrnko.cz/navody/v60</loc>
<lastmod>2026-09-30</lastmod>
</url>
</urlset>
Generujte ji automaticky z databáze nebo seznamu stránek, uvádějte jen kanonické URL vracející 200 a lastmod měňte, jen když se obsah opravdu změnil. Google ignoruje priority a changefreq. Sitemapu odešlete v Google Search Console.
Stavové kódy
| Situace | Kód |
|---|---|
| Stránka existuje | 200 |
| Trvale přesunuto | 301 (nebo 308) |
| Dočasně přesunuto | 302 (nebo 307) |
| Neexistuje | 404 |
| Trvale smazáno | 410 |
| Chyba serveru | 500/503 |
Klasická chyba SPA aplikací: neexistující URL vrátí hezkou stránku „Nenalezeno”, ale se stavem 200. Vyhledávač pak indexuje tisíce prázdných stránek (tzv. soft 404). Ověříte to příkazem:
curl -I https://www.zrnko.cz/neexistuje
JavaScript a renderování
Google umí JavaScript spouštět, ale renderování probíhá ve frontě a ne vždy zachytí vše. Ostatní vyhledávače a sociální sítě (náhledy odkazů) JavaScript často nespouští vůbec.
Pravidla:
- Důležitý obsah, nadpisy, odkazy a meta tagy mají být v HTML odpovědi serveru. Použijte server-side rendering nebo statické generování (Next.js, Nuxt, Astro…).
- Odkazy dělejte jako
<a href="/cesta">. Robot neprocházíonclickhandlery ani<span>s routerem. - Nepoužívejte
#routování (/#/produkty) – část za#se na server neposílá.
Co robot uvidí, ověříte v Search Console nástrojem Kontrola URL → Otestovat živou URL → Zobrazit testovanou stránku.
Strukturovaná data
JSON-LD podle schema.org pomáhá vyhledávačům pochopit obsah a může vést k rozšířeným výsledkům (hvězdičky, cena, FAQ, drobečková navigace):
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Ruční kávovar V60 – návod na přípravu",
"datePublished": "2026-09-30",
"author": { "@type": "Person", "name": "Jan Novák" },
"image": "https://www.zrnko.cz/img/v60.jpg"
}
</script>
Data musí odpovídat viditelnému obsahu stránky. Validujte je nástrojem Rich Results Test od Googlu nebo validátorem na validator.schema.org.
Open Graph pro sdílení
<meta property="og:title" content="Ruční kávovar V60 – návod">
<meta property="og:description" content="Poměr, mletí, teplota a postup krok za krokem.">
<meta property="og:image" content="https://www.zrnko.cz/img/v60-og.jpg">
<meta property="og:url" content="https://www.zrnko.cz/navody/v60">
<meta name="twitter:card" content="summary_large_image">
Přímo pozice ve vyhledávání neovlivní, ale náhled při sdílení na sociálních sítích ano. Obrázek ideálně 1200 × 630 px, absolutní URL.
Vícejazyčný web
<link rel="alternate" hreflang="cs" href="https://www.zrnko.cz/navody/v60">
<link rel="alternate" hreflang="en" href="https://www.zrnko.cz/en/guides/v60">
<link rel="alternate" hreflang="x-default" href="https://www.zrnko.cz/navody/v60">
Každá jazyková verze musí odkazovat na všechny ostatní i na sebe. Nepřesměrovávejte automaticky podle IP nebo jazyka prohlížeče – robot by se k ostatním verzím nedostal.
Obrázky a sémantika
- Popisné názvy souborů (
kavovar-v60.jpg, neIMG_2041.jpg) a smysluplnýalt. - Jeden
<h1>s hlavním tématem a logická struktura nadpisů. - Rychlost a Core Web Vitals – zejména na mobilu.
Kontrolní seznam před spuštěním
- [ ] unikátní
titleadescriptionna každé stránce - [ ]
canonicala 301 přesměrování na jednu variantu domény - [ ] robots.txt neblokuje produkci, sitemap je odeslaná
- [ ] neexistující stránky vrací 404
- [ ] obsah je v HTML bez nutnosti JavaScriptu
- [ ] strukturovaná data prošla validací
- [ ] Search Console ověřená a bez chyb indexace