Modul 3 · 3.2
www, presmerovanie a zmiešaný obsah
Modul 3: Adresa, https a používatelia · Čas čítania: 9 minút
Cieľ lekcie: Po tejto lekcii dokážete zvoliť jednu hlavnú adresu, presmerovať na ňu všetky varianty jedným presmerovaním a nájsť a opraviť zmiešaný obsah.
Kľúčové pojmy: kanonická adresa, 301 a 308, reťaz presmerovaní, zmiešaný obsah (mixed content), vyhľadanie a nahradenie v databáze, serializované údaje
Štyri adresy, jedna webová stránka
Vaša webová stránka je dostupná na štyroch adresách:
http://example.com
http://www.example.com
https://example.com
https://www.example.comPre návštevníka je to jedno, ale pre vyhľadávače sú to štyri rôzne adresy s rovnakým obsahom. Aj cookies (napríklad vaša prihlasovacia cookie) platia pre konkrétny názov: kto sa prihlási na www, nie je prihlásený na doméne bez www. Preto si zvolíte jednu kanonickú adresu (hlavnú adresu) a ostatné tri na ňu presmerujete.
Ktorú si vyberiete, je vecou vkusu (lekcia 2.1). Dôležité je, aby bola hlavná adresa všade rovnaká: v DNS, v certifikáte, v Nastavenia > Všeobecné (lekcia 3.1) aj v presmerovaniach.
Presmerovanie kódom 301, jedným krokom
Presmerovanie je odpoveď servera: „táto stránka sa nachádza inde“. Prehliadač potom sám prejde na novú adresu. Kód hovorí, o aký druh presmerovania ide:
| Kód | Význam | Použitie |
|---|---|---|
| 301 | Trvalo presunuté | Štandardná voľba pre http na https a pre www na doménu bez www (alebo naopak) |
| 308 | Trvalé, pričom metóda (napríklad odoslanie formulára) zostáva rovnaká | Dá sa použiť aj na tento účel; prehliadače a vyhľadávače ho považujú za 301 |
| 302 alebo 307 | Dočasné | Len pre niečo, čo je naozaj dočasné, napríklad stránku údržby |
Trvalé presmerovanie oznamuje vyhľadávačom, že skutočnou adresou je nová adresa. Pri dočasnom si vyhľadávače pamätajú starú adresu.
Dávajte pozor aj na reťaz. Predpokladajme, že vaša hlavná adresa je https://example.com. Potom 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 200Každý variant sa dostane na hlavnú adresu jedným krokom. Čo sa často stáva:
http://www.example.com 301 https://www.example.com/
https://www.example.com 301 https://example.com/Funguje to, ale stojí to krok navyše (dlhšie čakanie, najmä na mobile) a jedno TLS nadviazanie spojenia navyše. Horší je kruh: webový server presmeruje na https, WordPress presmeruje späť na http, pretože adresy v nastaveniach sú ešte na http, a prehliadač hlási „príliš veľa presmerovaní“. Vtedy dve nastavenia presmerúvajú proti sebe. Zabezpečte, aby na https presmerúval len jeden činiteľ (webový server alebo panel) a aby adresy vo WordPresse už boli nastavené na hlavnú adresu.
WordPress presmerúva aj sám: ak niekto požiada o https://www.example.com/contact/, zatiaľ čo adresa webovej stránky je https://example.com, WordPress presmeruje na https://example.com/contact/. Funguje to len vtedy, keď požiadavka dorazí k WordPressu, teda keď webový server smeruje aj názov www na túto stránku.
Zmiešaný obsah
Zmiešaný obsah (mixed content) je stránka na https, ktorá načítava súčasti cez http://: obrázok, štýly, skript, písmo alebo vložené video. Prehliadač to považuje za nebezpečné, pretože tieto súčasti môže niekto cestou zmeniť.
- Skripty, štýly a iframe cez http prehliadače blokujú. Vaša webová stránka potom vyzerá rozbito alebo niektorá funkcia nefunguje.
- Obrázky, zvuk a video cez http sa moderné prehliadače pokúsia automaticky načítať cez https; ak sa to nepodarí, zablokujú ich. Ikona zámku potom môže zobraziť varovanie.
Odkiaľ sa berie:
- Staré odkazy vo vašom obsahu: webová stránka, ktorá kedysi bežala na http, má v tisícoch článkov
<img src="http://example.com/wp-content/uploads/...">. WordPress ukladá tieto odkazy do databázy doslovne. - Nastavenia témy alebo pluginu s úplnou adresou, napríklad logo alebo pozadie s
http://. - Externé súčasti z inej stránky, ktoré sú dostupné len cez http. Tie musíte nahradiť alebo odstrániť.
- Adresy v Nastavenia > Všeobecné, ktoré sú ešte na http (lekcia 3.1).
Ako ho nájdete
Otvorte stránku, stlačte F12 a pozrite sa na kartu Konzola. Prehliadač tam hlási každý zmiešaný obsah aj s adresou súčasti. Alebo v zdrojovom kóde stránky (Ctrl+U) vyhľadajte src="http:// a href="http://. Odkazy na iné stránky v bežnom texte (<a href="http://...">) zmiešaný obsah nespôsobujú; ide o veci, ktoré stránka načítava.
Vyhľadanie a nahradenie, ale správne
Riešením pre staré odkazy vo vašom obsahu je nahradiť v databáze všetky http://example.com za https://example.com. Lákavý je SQL príkaz ako:
UPDATE wp_options SET option_value = REPLACE(option_value, 'http://example.com', 'https://example.com');Nerobte to. Mnohé nastavenia tém, pluginov a widgetov sú uložené serializovane. Vyzerá to takto:
s:27:"http://example.com/logo.png";Zápis s:27 znamená: nasleduje text s dĺžkou 27 znakov. Po jednoduchom nahradení má text 28 znakov (pribudlo s), ale stále je tam uvedené 27. PHP potom hodnotu nedokáže prečítať a nastavenie potichu zmizne: prázdne menu, zmiznuté logo, chýbajúce widgety.
Použite nástroj, ktorý tieto dĺžky aktualizuje, a vždy si najprv vytvorte zálohu (lekcia 8.1): vyhľadanie a nahradenie nemá kôš.
- WP-CLI: najprv sa pozrieť, potom konať. V termináli prejdite do priečinka vášho WordPressu a najprv spustite skúšobný beh (prvý riadok), až potom ostrý beh (druhý riadok).
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=guidS --dry-run uvidíte, koľko nahradení by bolo v každej tabuľke, bez toho, aby sa čokoľvek zmenilo. --skip-columns=guid ponechá nemenné identifikátory článkov (stĺpec guid) bez zmeny; WordPress odporúča tieto hodnoty nikdy nemeniť. Bez ďalšej voľby pracuje WP-CLI len s tabuľkami WordPressu. Ak má plugin vlastné tabuľky s rovnakou predponou, pridajte --all-tables-with-prefix. --all-tables použite len vtedy, keď viete prečo: zasiahne každú tabuľku v databáze, aj tabuľky inej stránky alebo aplikácie.
- Plugin na vyhľadanie a nahradenie, ktorý podporuje serializované údaje (v adresári pluginov na wordpress.org ich je viacero). Aj tam najprv použite skúšobný režim a plugin potom znova odstráňte.
Nikdy nenahrádzajte niečo ako example.com bez http:// alebo https:// pred tým: zasiahli by ste aj e-mailové adresy a iné texty. Celý postup, aj pre tých, ktorí nemajú terminál, nájdete v článku znalostnej databázy o vyhľadaní a nahradení v databáze WordPressu (pozri Ďalšie čítanie).
V praxi: takto to vyzerá v paneli
Ako príklad použijeme DirectAdmin. Iné panely majú podobný prepínač pre „vždy https“.
- V nastaveniach domény zapnite Vynútiť presmerovanie na https (lekcia 3.1).
- Pri doméne zvoľte, či má www smerovať na doménu bez www alebo naopak (v DirectAdmin v nastaveniach domény; inak presmerovaním cez Presmerovania stránok alebo
.htaccess). - Reťaz skontrolujte úlohou nižšie alebo vývojárskymi nástrojmi vášho prehliadača (karta Sieť, začiarkavacie políčko „Zachovať denník“).
Zhrnutie
- Zvoľte jednu kanonickú adresu a ostatné tri varianty na ňu presmerujte kódom 301 (alebo 308), jedným krokom.
- Na https nech presmerúva len jeden činiteľ; inak vznikne kruh.
- Zmiešaný obsah je stránka na https, ktorá načítava súčasti cez http; konzola prehliadača ukáže, ktoré.
- Staré odkazy v databáze nahradíte pomocou
wp search-replacealebo pluginom, ktorý rozumie serializovaným údajom, nikdy nie jednoduchým SQL REPLACE. - Vždy najprv záloha a najprv skúšobný beh (
--dry-run); stĺpecguidnechajte bez zmeny a zostaňte pri tabuľkách WordPressu.
Kvíz
Úloha
Úloha A3.2: Jedna hlavná adresa a žiadny zmiešaný obsah. Zadajte svoju doménu. Program otvorí štyri varianty (http a https, s www a bez www) a sleduje presmerovania. Správne je: všetky štyri skončia na rovnakej adrese s https, s najviac jedným presmerovaním na variant a len s trvalými kódmi (301 alebo 308). Potom program prečíta HTML domovskej stránky a hľadá skripty, štýly, obrázky, iframe a písma, ktoré sa načítavajú cez http://.
Ďalšie čítanie
Tieto články opisujú kroky v paneloch WebOké; v iných paneloch fungujú podobne.
- Návod na DirectAdmin 6.4: Návštevníkov vždy presmerovať na https
- Návod na DirectAdmin 4.7: Presmerovania stránok: presmerovanie domény alebo stránky
- Vyhľadávanie a nahrádzanie v databáze WordPress
- Presmerovať návštevníkov povinne na https
- Bezplatný DNS kurz 3.4: www, presmerovanie a čo DNS nerobí
- Zmiešaný obsah (MDN, anglicky): https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content
- wp search-replace (developer.wordpress.org, anglicky): https://developer.wordpress.org/cli/commands/search-replace/
