Přejít na obsah

Nastavení cookies

Zvolte, které druhy cookies povolíte. Svou volbu můžete kdykoli změnit přes Nastavení cookies v dolní části každé stránky. Prohlášení o ochraně osobních údajů

Nezbytné

Vždy zapnuté

Potřebné pro přihlášení, uchování košíku a zapamatování vašich voleb. Jsou vždy zapnuté.

Které cookies?
  • weboke_sessie, weboke_klant, weboke_remember: vaše relace a trvalé přihlášení
  • weboke_basket: váš košík
  • wkBtwIncl: zobrazení cen s DPH nebo bez DPH
  • wok_cookies: vaše volba cookies, 12 měsíců

Měří, která reklama vede k návštěvě nebo objednávce, abychom neplatili za reklamy, které nic nepřinášejí.

Které cookies?
  • Google Ads přes Google Tag Manager (_gcl_au, _gcl_aw), až 90 dní
  • OpenAI Ads, reklamy v ChatGPT
  • wok_aff: partner, který vás k nám doporučil (partnerský program), 60 dní

4,6

Země a jazyk

Každá země má vlastní web s cenami a DPH dané země.

Zobrazit

www, přesměrování a smíšený obsah

Modul 3: Adresa, https a uživatelé · Doba čtení: 9 minut

Cíl lekce: Po této lekci dokážete zvolit jednu hlavní adresu, přesměrovat na ni všechny varianty jediným přesměrováním a vyhledat a opravit smíšený obsah (mixed content).

Klíčové pojmy: kanonická adresa, 301 a 308, řetězec přesměrování, smíšený obsah (mixed content), vyhledání a nahrazení v databázi, serializovaná data

Čtyři adresy, jeden web

Váš web je dostupný na čtyřech adresách:

http://example.com
http://www.example.com
https://example.com
https://www.example.com

Pro návštěvníka v tom není rozdíl, ale pro vyhledávače jde o čtyři různé adresy se stejným obsahem. Také cookies (například Vaše přihlašovací cookie) platí pro konkrétní název: kdo se přihlásí na www, není přihlášen na doméně bez www. Proto zvolte jednu kanonickou adresu (hlavní adresu) a zbylé tři na ni přesměrujte.

Kterou zvolíte, je věc vkusu (lekce 2.1). Důležité je, aby hlavní adresa byla všude stejná: v DNS, v certifikátu, v Nastavení > Obecné (lekce 3.1) i v přesměrováních.

Přesměrování kódem 301, jedním krokem

Přesměrování je odpověď serveru: „tato stránka je jinde“. Prohlížeč pak sám přejde na novou adresu. Kód říká, o jaké přesměrování jde:

KódVýznamPoužití
301Trvale přesunutoStandardní volba pro přesměrování z http na https a z www na doménu bez www (nebo naopak)
308Trvale, přičemž metoda (například odeslání formuláře) zůstává stejnáLze použít i k tomuto účelu; prohlížeče a vyhledávače s ním zacházejí jako s 301
302 nebo 307DočasněPouze pro něco, co je opravdu dočasné, například stránku údržby

Trvalé přesměrování říká vyhledávačům, že skutečná je nová adresa. U dočasného si dál pamatují starou adresu.

Dávejte pozor také na řetězec. Řekněme, že Vaše hlavní adresa je https://example.com. Pak chcete:

http://www.example.com   301  https://example.com/
http://example.com       301  https://example.com/
https://www.example.com  301  https://example.com/
https://example.com      200

Každá varianta se dostane na hlavní adresu jedním krokem. Často se ale stává tohle:

http://www.example.com   301  https://www.example.com/
https://www.example.com  301  https://example.com/

Funguje to, ale stojí to krok navíc (delší čekání, hlavně na mobilu) a jedno TLS handshake navíc. Horší je smyčka: webový server přesměruje na https, WordPress přesměruje zpět na http, protože adresy v nastavení jsou stále na http, a prohlížeč ohlásí „příliš mnoho přesměrování“. V takovém případě proti sobě působí dvě nastavení. Zajistěte, aby na https přesměrovávala jen jedna strana (webový server, nebo panel) a aby adresy ve WordPressu už byly nastavené na hlavní adresu.

WordPress také sám přesměrovává: pokud někdo požádá o https://www.example.com/contact/, zatímco adresa webu je https://example.com, WordPress přesměruje na https://example.com/contact/. Funguje to jen tehdy, když požadavek k WordPressu dorazí, tedy když webový server směruje i název www na tento web.

Smíšený obsah

Smíšený obsah (mixed content) je stránka na https, která načítá části přes http://: obrázek, styl, skript, písmo nebo vložené video. Prohlížeč to považuje za nebezpečné, protože tyto části mohou být cestou pozměněny.

  • Skripty, styly a iframy přes http prohlížeče blokují. Váš web pak vypadá rozbitě nebo některá funkce nefunguje.
  • Obrázky, zvuk a video přes http se moderní prohlížeče pokusí automaticky načíst přes https; pokud se to nepodaří, zablokují je. Ikona zámku pak může zobrazit varování.

Odkud se bere:

  1. Staré odkazy ve Vašem obsahu: web, který dříve běžel na http, má v tisících příspěvků <img src="http://example.com/wp-content/uploads/...">. WordPress tyto odkazy ukládá do databáze doslovně.
  2. Nastavení šablony nebo pluginu s úplnou adresou, například logo nebo pozadí s http://.
  3. Externí části z jiného webu, které jsou dostupné jen přes http. Ty musíte nahradit nebo odstranit.
  4. Adresy v Nastavení > Obecné, které jsou stále na http (lekce 3.1).

Jak ho najdete

Otevřete stránku, stiskněte F12 a podívejte se na kartu Console (v české verzi prohlížeče Konzole). Prohlížeč ohlásí každý smíšený obsah i s adresou dané části. Nebo ve zdrojovém kódu stránky (Ctrl+U) vyhledejte src="http:// a href="http://. Odkazy na jiné weby v běžném textu (<a href="http://...">) smíšený obsah nezpůsobují; jde o věci, které stránka načítá.

Vyhledat a nahradit, ale správně

Řešením starých odkazů ve Vašem obsahu je nahradit v databázi všechny http://example.com za https://example.com. Láká to k SQL příkazu jako:

UPDATE wp_options SET option_value = REPLACE(option_value, 'http://example.com', 'https://example.com');

Nedělejte to. Mnoho nastavení šablon, pluginů a widgetů je uloženo serializovaně. Vypadá to takto:

s:27:"http://example.com/logo.png";

s:27 znamená: následuje text o délce 27 znaků. Po prostém nahrazení má text 28 znaků (přibylo s), ale stále je tam uvedeno 27. PHP pak hodnotu nedokáže přečíst a nastavení tiše zmizí: prázdné menu, zmizelé logo, chybějící widgety.

Použijte nástroj, který tyto délky aktualizuje, a vždy si nejprve udělejte zálohu (lekce 8.1): vyhledání a nahrazení nemá koš.

  • WP-CLI: nejdřív se podívat, pak provést. V terminálu přejděte do složky svého WordPressu a nejprve spusťte zkušební běh (první řádek), teprve potom ostrý (druhý řádek).
wp search-replace 'http://example.com' 'https://example.com' --skip-columns=guid --dry-run
wp search-replace 'http://example.com' 'https://example.com' --skip-columns=guid

S --dry-run uvidíte, kolik nahrazení by v každé tabulce proběhlo, aniž by se cokoli změnilo. --skip-columns=guid ponechá trvalé identifikátory příspěvků (sloupec guid) beze změny; WordPress doporučuje je nikdy neměnit. Bez dalších voleb pracuje WP-CLI jen s tabulkami WordPressu. Pokud má plugin vlastní tabulky se stejnou předponou, přidejte --all-tables-with-prefix. --all-tables použijte jen tehdy, když víte proč: zasáhne každou tabulku v databázi, i tabulky jiného webu nebo aplikace.

  • Plugin pro vyhledání a nahrazení, který podporuje serializovaná data (v adresáři pluginů na wordpress.org jich je několik). I tam nejprve použijte zkušební režim a plugin poté zase odstraňte.

Nikdy nenahrazujte něco jako example.com bez http:// nebo https:// na začátku: zasáhli byste i e-mailové adresy a další texty. Celý postup, i pro ty, kdo nemají terminál, najdete v článku znalostní báze o vyhledání a nahrazení v databázi WordPressu (viz Další čtení).

V praxi: jak to vypadá v panelu

Jako příklad použijeme DirectAdmin. Jiné panely mají podobný přepínač pro „vždy https“.

  1. V nastavení domény zapněte Vynutit SSL s přesměrováním na https (lekce 3.1).
  2. U domény zvolte, zda má www vést na doménu bez www, nebo naopak (v DirectAdminu v nastavení domény; jinak přesměrováním přes Přesměrování webu nebo .htaccess).
  3. Zkontrolujte řetězec pomocí úkolu níže nebo pomocí vývojářských nástrojů prohlížeče (karta Síť, zaškrtávací políčko „Zachovat protokol“).

Shrnutí

  • Zvolte jednu kanonickou adresu a nechte na ni zbylé tři varianty vést kódem 301 (nebo 308), jedním krokem.
  • Na https ať přesměrovává jen jedna strana; jinak vznikne smyčka.
  • Smíšený obsah je stránka na https, která načítá části přes http; konzole prohlížeče ukáže které.
  • Staré odkazy v databázi nahrazujte pomocí wp search-replace nebo pluginu, který rozumí serializovaným datům, nikdy prostým SQL REPLACE.
  • Vždy nejprve záloha a nejprve zkušební běh (--dry-run); sloupec guid nechte beze změny a držte se tabulek WordPressu.

Kvíz

1. Jaké přesměrování použijete k trvalému přesměrování z http na https?



2. Po zapnutí „vždy https“ prohlížeč hlásí „příliš mnoho přesměrování“. Co je nejpravděpodobnější příčinou?



3. Proč je UPDATE ... REPLACE(...) v SQL nebezpečné pro převod adres?



4. Kterou část stránky na https prohlížeč vždy zablokuje, pokud se načítá přes http?



Úkol

Úkol A3.2: Jedna hlavní adresa a žádný smíšený obsah. Zadejte svou doménu. Program otevře čtyři varianty (http a https, s www i bez www) a sleduje přesměrování. Správně je: všechny čtyři skončí na stejné adrese s https, s nejvýše jedním přesměrováním na variantu a pouze s trvalými kódy (301 nebo 308). Poté program načte HTML domovské stránky a hledá skripty, styly, obrázky, iframy a písma, které se načítají přes http://.

Úkol A3.2: Jedna hlavní adresa a žádný smíšený obsah


Co vyplníte a co zjistíme, neukládáme. Váš prohlížeč si pamatuje Vaše odpovědi a to, zda jste úkol splnili. Pokud jste přihlášeni, ukládáme v sekci Moje kurzy pouze to, že jste úkol měli (téměř) správně; i to tam můžete odstranit.

Další čtení

Tyto články popisují kroky v panelech WebOké; v jiných panelech to funguje podobně.

Chvíli strpení…

Nastavení vašich domén

U každé domény nastavte jmenné servery, propojení s hostingem a to, kdo bude držitelem.

Načítání vašich domén…