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ť všetky varianty na ňu jedným presmerovaním a odhaliť aj vyriešiť zmiešaný obsah.
Kľúčové pojmy: kanonická adresa, 301 a 308, reťazec presmerovaní, zmiešaný obsah (mixed content), hľadanie a nahrádzanie v databáze, serializované údaje
Štyri adresy, jedna webová stránka
Vaša webová stránka je dostupná cez štyri adresy:
http://example.com
http://www.example.com
https://example.com
https://www.example.comPre návštevníka na tom nezáleží, ale pre vyhľadávače ide o štyri rôzne adresy s rovnakým obsahom. Aj cookies (napríklad vaše prihlasovacie cookie) platia podľa názvu: kto sa prihlási na www, nie je prihlásený na holej doméne. Preto si vyberiete 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) a v presmerovaniach.
Presmerovanie pomocou 301, v jednom kroku
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ý typ presmerovania ide:
| Kód | Význam | Použitie |
|---|---|---|
| 301 | Trvalo presťahované | Štandardná voľba pri presmerovaní z http na https a z www na holú doménu (alebo naopak) |
| 308 | Trvalé, pričom metóda (napríklad odoslanie formulára) zostáva rovnaká | Môže 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ánka údržby |
Trvalé presmerovanie hovorí vyhľadávačom, že nová adresa je tá skutočná. Pri dočasnom si naďalej pamätajú starú adresu.
Dávajte si pozor aj na reťazec presmerovaní. Predpokladajme, že vaša hlavná adresa je https://example.com. Potom chcete toto:
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 skončí na hlavnej adrese v jednom kroku. Často sa však stáva toto:
http://www.example.com 301 https://www.example.com/
https://www.example.com 301 https://example.com/Aj to funguje, ale stojí to navyše jeden krok (dodatočné čakanie, najmä na mobile) a navyše jeden TLS handshake. Horšie je, keď vznikne slučka: webový server presmeruje na https, WordPress presmeruje späť na http, pretože adresy v nastaveniach sú stále na http, a prehliadač nahlási „príliš veľa presmerovaní“. Vtedy proti sebe pôsobia dve nastavenia naraz. Zabezpečte, aby presmerovanie na https vykonávala len jedna strana (webový server alebo panel) a aby adresy vo WordPresse už boli nastavené na hlavnú adresu.
WordPress presmerováva aj sám: ak niekto zadá https://www.example.com/contact/, pričom adresa stránky je https://example.com, WordPress presmeruje na https://example.com/contact/. To funguje len vtedy, ak požiadavka vôbec dorazí k WordPressu, teda ak webový server smeruje názov www tiež na túto stránku.
Zmiešaný obsah
Zmiešaný obsah (mixed content) je https stránka, ktorá načítava časti cez http://: obrázok, štýl, skript, písmo alebo vložené video. Prehliadač to považuje za nebezpečné, pretože tieto časti môžu byť cestou pozmenené.
- Skripty, štýly a iframe cez http prehliadače blokujú. Vaša stránka potom môže vyzerať rozbito alebo nejaká funkcia nebude fungovať.
- Obrázky, zvuk a video cez http sa moderné prehliadače pokúsia automaticky načítať cez https; ak sa to nepodarí, zablokujú ich. Zámok v prehliadači potom môže zobraziť upozornenie.
Odkiaľ to pochádza:
- Staré odkazy vo vašom obsahu: stránka, ktorá kedysi bežala na http, má v tisíckach článkov odkazy typu
<img src="http://example.com/wp-content/uploads/...">. WordPress tieto odkazy ukladá do databázy doslovne. - Nastavenia témy alebo pluginu s úplnou adresou, napríklad logo alebo pozadie s
http://. - Externé prvky z inej stránky, ktoré sú dostupné len cez http. Tie treba nahradiť alebo odstrániť.
- Adresy v Nastavenia > Všeobecné, ktoré sú stále na http (lekcia 3.1).
Ako to nájsť
Otvorte stránku, stlačte F12 a pozrite sa na kartu Konzola. Prehliadač nahlási každý zmiešaný obsah spolu s adresou danej časti. Prípadne vo zdrojovom kóde stránky (Ctrl+U) hľadajte src="http:// a href="http://. Bežné odkazy na iné stránky v texte (<a href="http://...">) nespôsobujú zmiešaný obsah; ide o veci, ktoré stránka načítava.
Hľadanie a nahrádzanie, ale správne
Riešením starých odkazov vo vašom obsahu je nahradiť všetky výskyty http://example.com v databáze za https://example.com. Pokušením 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é v serializovanej podobe. Vyzerá to takto:
s:27:"http://example.com/logo.png";s:27 znamená: nasleduje text s dĺžkou 27 znakov. Po obyčajnom nahradení má text 28 znakov (pridalo sa písmeno s), ale stále tam stojí 27. PHP potom už hodnotu nedokáže prečítať a nastavenie jednoducho zmizne: prázdne menu, zmiznuté logo, chýbajúce widgety.
Použite nástroj, ktorý tieto dĺžky zároveň aktualizuje:
- WP-CLI: najprv sa pozrite, potom konajte.
wp search-replace 'http://example.com' 'https://example.com' --all-tables --dry-run
wp search-replace 'http://example.com' 'https://example.com' --all-tablesPomocou --dry-run uvidíte, koľko nahradení by sa vykonalo v každej tabuľke, bez toho, aby sa čokoľvek zmenilo.
- Plugin na hľadanie a nahrádzanie, ktorý podporuje serializované údaje (v adresári pluginov na wordpress.org je ich viacero). Po použití plugin opäť odstráňte.
Vždy najprv vytvorte zálohu (lekcia 8.1). Tiež nikdy nenahrádzajte niečo ako example.com bez http:// pred ním: zasiahli by ste tým aj e-mailové adresy a iné texty.
V praxi: ako 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 holú doménu, alebo naopak (v DirectAdmine v nastaveniach domény; inak pomocou presmerovania cez Presmerovania stránok alebo
.htaccess). - Skontrolujte reťazec presmerovaní pomocou úlohy nižšie alebo pomocou vývojárskych nástrojov prehliadača (karta Sieť, zaškrtnuté „Zachovať záznam“).
Zhrnutie
- Zvoľte jednu kanonickú adresu a nechajte ostatné tri varianty presmerovať na ňu pomocou 301 (alebo 308), v jednom kroku.
- Nechajte presmerovanie na https vykonávať len jednu stranu; inak vznikne slučka.
- Zmiešaný obsah je https stránka, ktorá načítava časti cez http; konzola prehliadača ukáže, ktoré.
- Staré odkazy v databáze nahrádzajte pomocou
wp search-replacealebo pluginu, ktorý rozumie serializovaným údajom, nikdy obyčajným SQL príkazom REPLACE. - Vždy najprv záloha a najprv skúšobné kolo.
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 aj bez www) a sleduje presmerovania. V poriadku je, ak všetky štyri skončia na rovnakej adrese s https, s maximálne jedným presmerovaním na variant a len s trvalými kódmi (301 alebo 308). Následne 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 popisujú 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
- Povinne presmerovať návštevníkov na https
- Bezplatný DNS kurz 3.4: www, presmerovanie a čo DNS nerobí
- Zmiešaný obsah (MDN, po anglicky): https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content
- wp search-replace (developer.wordpress.org, po anglicky): https://developer.wordpress.org/cli/commands/search-replace/
