Případová studie · 2026 · web a migrace
Začali jsme u sebe
Když někomu prodáváte rychlý a bezpečný web, první, co si o vás zákazník ověří, je váš vlastní. Ten náš byl na HTTP, běžel na Joomle, někdo ho napadl a za šestnáct měsíců přivedl osmnáct návštěvníků. Tohle je popis toho, co jsme s tím udělali.
Co nefungovalo
Subdoména tvorba.pocitacovapohotovost.cz prezentovala divizi, která dělá
weby a jejich propagaci. Běžela na Joomle se šablonou Helix Ultimate, celá na HTTP —
prohlížeč tedy u formulářů zobrazoval varování „nezabezpečeno". Na webu, který prodává
tvorbu webů, je tohle nejvážnější jednotlivý problém, jaký může nastat: zákazník to
přečte jako „neumí zabezpečit ani vlastní web".
K tomu patřily drobnosti, které samy o sobě nic neznamenají a dohromady jsou signál zanedbanosti: autor stránek uvedený jako „Super User", tedy výchozí hodnota Joomly. Odkaz na Google+, službu zrušenou v roce 2019. V ceníku položka „Upgrade Joomla systému" za 19 500 Kč. Menu s více než třiceti položkami ve třech úrovních.
Čísla, která rozhodla
Než jsme se pustili do přestavby, vytáhli jsme data ze Search Console za šestnáct měsíců. Vypadala takhle:
| Prokliky celkem | 18 |
|---|---|
| Zobrazení | 20 350 |
| Průměrné CTR | 0,09 % |
| Adres s aspoň jedním proklikem | 13 ze 151 |
| Pozice na „webové stránky" | 64,6 |
Osmnáct prokliků za šestnáct měsíců znamená jednu věc: nebylo co ztratit. To se ukázalo jako důležité o pár odstavců dál.
Nález, se kterým jsme nepočítali
Ze 151 adres, které Search Console o subdoméně znala, jich 110 mělo tvar
/products/G71…. Mezi dotazy, na které se web zobrazoval, byly
japonské spotřební produkty a modelová označení elektroniky — dohromady
27 dotazů a 46 zobrazení. Na webu české agentury nemá ani jedno co dělat.
Byla to stejná rodina nálezu, jakou jsme krátce předtím řešili na hlavní doméně, jen s jinou náplní. Napadená instalace CMS sloužila cizímu prodeji. Na hostingu je dnes všechno smazané.
Co z toho plyne pro migraci
Těch 110 adres jsme nepřesměrovali. Dostaly stav 410 Gone. Poslat je na skutečné stránky by na ně převedlo signály z cizího spamu — a ty signály byly japonské, komerční a s naším oborem nesouvisející. 410 říká vyhledávači „zrušeno natrvalo"; 404 by znamenalo jen „nenalezeno".
Co jsme navrhli a proč
Žádné CMS
Web generuje Astro do statického HTML. Nemá jádro, rozšíření, administraci ani databázi. Jediný dynamický bod je PHP skript, který přebírá formuláře — pár set řádků, které neukládají nic na disk. Tohle není ideologie, ale přímý závěr z toho, co se stalo: instalaci, která tu nebyla, nejde napadnout.
Nové adresy, proti doporučení
Zadání pro přestavbu doporučovalo ponechat staré adresy znak po znaku — je to bezpečnější postup a na hlavním webu jsme ho použili. Tady jsme se rozhodli opačně a stojí za to říct proč, protože je to přesně ten typ rozhodnutí, který se dělá podle čísel, ne podle pravidla.
Riziko změny adres se popisuje jako propad o 10–20 % na dva až šest týdnů.
Dvacet procent z osmnácti prokliků jsou tři prokliky. Proti tomu stálo, že 119 adres
ze 151 nemělo příponu .html, takže „zachovat" by natrvalo zakonzervovalo
nekonzistentní tvar adres — navíc z velké části pocházející z doby napadení.
Jedno přesměrování, ne dvě
Protože starý web běžel celý na HTTP, je veškerá dosavadní bonita navázaná na
http:// adresy. Kdybychom řešili zvlášť přechod na HTTPS a zvlášť změnu
adres, každý příchozí odkaz by skákal dvakrát. Každé z 39 pravidel proto míří rovnou
na absolutní finální adresu a stojí před pravidlem pro kanonickou doménu.
Výsledek je jeden skok z libovolné staré adresy v libovolném protokolu.
Co bylo součástí dodávky
- Inventura 151 adres ze Search Console a redirect mapa
- Nová struktura adres a keyword mapa
- Design systém s kontrasty ověřenými skriptem v obou barevných schématech
- Statický web v Astro 5, tři formuláře se záložní cestou e-mailem
- Měření s Consent Mode v2 a cookie lištou, kde „Odmítnout" je stejně dostupné jako „Přijmout"
- Sada blokujících kontrol, které neprojdou-li, web se nenasadí
Výsledek
Tady je potřeba být přesný. Web v době psaní této studie ještě není na ostré adrese, takže čísla z živého provozu — Lighthouse, LCP, Core Web Vitals — neexistují a nebudeme je odhadovat. Doplní se sem v den spuštění i s datem měření.
Co změřené je, jsou velikosti hotového buildu. Ty na serveru nezávisí:
| Veličina | Naměřeno | Rozpočet |
|---|---|---|
| HTML titulní stránky po gzipu | 9,3 kB | < 45 kB |
| CSS celého webu po gzipu | 4,8 kB | < 25 kB |
| Vlastní JavaScript po gzipu | 11,5 kB | < 25 kB |
| Váha stránky včetně fontů | 197,2 kB | < 450 kB |
Měřeno 2026-09-13 skriptem nad hotovým buildem, komprese gzip -9.
Co si z toho odnést, když řešíte totéž
Tři věci, které platí i mimo náš případ. Zaprvé, než se rozhodnete zachovat staré adresy, podívejte se, co doopravdy vydělávají — pravidlo „neměnit URL" je dobré, ale ne když měníte adresy, které nikdo nenavštěvuje. Zadruhé, po napadení se spamové adresy nepřesměrovávají; 410 je správná odpověď. Zatřetí, pokud web běží na HTTP, je přechod na HTTPS sám o sobě migrace a přesměrování je potřeba postavit tak, aby skákalo jednou.
Řešíte podobnou situaci?
Starý web, napadené CMS, nebo jen tušení, že to takhle dál nejde. Konzultace je nezávazná a nekončí objednávkou.
Ozveme se do jednoho pracovního dne.