Zpět na blog

HTTPS a WordPress – přechod krok za krokem

Přechod na HTTPS není žádná věda, přes to s tím má spousta webů stále problém. Nemluvě o těch, které HTTPS ještě nemají vůbec. Pokud pracujete s daty uživatelů a ještě nemáte SSL certifikát, tak budete dokonce ve výsledcích vyhledávání označeni jako nedůvěryhodní. Což určitě nechcete. :-) O výhodách a nevýhodách https toho bylo na internetu napsáno mraky, takže se zaměřím pouze na to, jak na něj bez problému na WordPressu přejít.

1. Získání SSL certifikátu

Než vůbec začnete s jakýmikoliv úpravami, zajistěte si platný SSL certifikát. Kontaktujte svého webhostera s dotazem na možnosti. Někteří (např. ONEbit.cz) vám nabídnou dokonce SSL zdarma.

2. Změna hlavní adresy webu

Máte-li certifikát, můžete přistoupit ke změně adresy webu. Tu změníte v administraci Nastavení -> Obecné.

Je třeba změnit http na https v položkách Instalace WordPressu (URL)Úvodní stránka webu (URL).

3. Aktualizace všech ostatních adres na webu

Předchozí krok změní URL v nastavení WordPressu, to se aplikuje všude tam, kde jsou použity relativní adresy. Tam, kde máte adresy absolutní (tedy http:// – v příspěvcích, widgetech, stránkách atd.) je třeba je upravit a přidat esko. Jsou dvě možnosti jak to provést:

  1. Ručně: Pokud máte pár stránek, není problém je projít a odkazy upravit. Stejně tak u widgetů a všude tam, kde jste kdy vkládali odkazy ručně.
  2. Pluginem (doporučuji): Pokud chcete tento proces zautomatizovat a mít jistotu, že nic nevynecháte, máte možnost využít některý z pluginů. Doporučuji Velvet Blues Update URLs nebo Search & Replace. Stačí zadat starou (s http) a novou (s https) adresu a plugin se o vše postará.

4. Trvalé přesměrování všech HTTP požadavků na HTTPS

V tuto chvíli máme vyřešeny adresy a web by nyní měl bez problému běžet na https. WordPress se ale bohužel (zatím) automaticky nepostará o přesměrování starých odkazů, takže z hlediska SEO budete mít na webu duplicitní stránky (verze s http a verze s https) a to není dobré. Potřebujeme všechny http požadavky přesměrovat na https. Řešení je jednoduché – stačí vložit následující kód do souboru .htaccess.

# BEGIN FORCE REDIRECT TO HTTPS
RewriteEngine On
RewriteCond %{ENV:HTTPS} !^.*on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# END FORCE REDIRECT TO HTTPS

[notification type=“alert-info“ close=“false“ ]Pro správnou a 100% funkčnost je potřeba tento kód vložit úplně na začátek souboru, tedy ještě před # BEGIN WordPress.[/notification]

5. Kontrola a odstranění smíšeného obsahu (mixed-content)

Velice častá chyba u webů s SSL certifikátem. Pokud vám web běží s HTTPS, ale zároveň načítá některé prvky (skripty, obrázky, styly, iframe atd.) bez zabezpečeného přenosu (bez https), bude je prohlížeč blokovat. Pokud jste prošli pečlivě všechny body výše, tak ze strany WordPressu a pluginů by tento problém nastat neměl. Často se ale stává, že je přímo v šabloně vložen odkaz „natvrdo“ a s protokolem http. Je potřeba všechny tyto odkazy najít a ručně upravit.

Pokud je vše v pořádku, tak v Chrome to poznáte například následovně:

V případě, že se na stránce nachází smíšený obsah, tak nebude obsažena informace o zabezpečeném připojení a https bude zašedlé.

Detaily lze nalézt v konzoli prohlížeče (F12). Chyba může vypadat například následovně:

Je potřeba zkontrolovat nejen hlavní stránku, ale také podstránky. Oprava problému pak záleží na samotné chybě v konzoli. Jak jsem zmínil výše, většinou se jedná o odkazy v šabloně a úprava není nijak komplikovaná. Vážnější problém může nastat v případě iframu, do kterého načítáte nezabezpečená data a zdroj s https načít nelze (cílový obsah nemá certifikát). Zde je potřeba problém řešit s poskytovatelem načítaného obsahu a vyžádat si šifrovanou verzi.

Pro automatickou detekci smíšeného obsahu doporučuji vyžít nástroj www.jitbit.com/sslcheck.

6. Aktualizace externích služeb

Pokud používáte různé externí služby, které jsou vázané na doménu, tak bude potřeba aktualizovat i je. U Google Analytics je to jednoduché – v nastavení služby stačí změnit protokol. U Search Console (Google Webmaster Tools) musíte ale web přidat celý znovu, systém bere http a https jako dva odlišné weby. U dalších služeb je to obdobné – hlavní je vše aktualizovat nebo minimálně zkontrolovat.

Potřebujete-li  s přechodem na HTTPS pomoci, ozvěte se mi na info@sevciktomas.cz nebo do komentářů níže. Rád pomůžu, popř. celý proces zajistím.

Užili jste si článek? Pokud ano, budu rád za sdílení.

Autor: Tomáš Ševčík

Tvorbou webů na WordPressu a vývojem webových aplikací se zabývám už přes 13 let. Zajímám se o veškeré webové trendy, samotný Wordpress a technologie a občas o tom něco napíšu. Více o mně 

A co vaše názory?

  1. Jan Eder 14. srpna 2018

    Dobrý den Tomáši,
    děkuji moc za tento návod. Chtěl bych Vás poprosit o radu. Web klarapomaha.cz mi běží na Wedosu, kde jsem si aktivoval https s certifikatem Lets Encrypt. Pak jsem postupoval podle vaseho navodu a pri nastaveni bodu 2 jsem se uz nedostal zpatky do administrace a nejak mi to cele nefunguje. Nevite, jak bych mohl zase upravit to nastaveni v Bodu 2, kdyz se ted nemuzu vubec prihlasit? Moc diky za kazdou radu. Trochu se mi z toho rosi celo. Honza

  2. Michal Glaser 29. dubna 2019

    Dobrý den,
    mám prosbu, nechal sem si podle kroku 1 vystavit certifikát od webhostinu a podle kroku 2 jsem změnil nastavení hlavní adresy webu… od té chvíle se nemohu dostat na administraci webu… poradíte mi, v kterém souboru php je to uloženo, abych to mohl vrátit zpět? Moc děkuji.

    • Tomáš Ševčík 29. dubna 2019

      Michale, toto nastavení nalezente v databázi, v tabulce wp_options. Těžko ale říct, proč se vám nedaří dostat do administarce, chtělo by to mrknout do logu na serveru, co je tam špatně.

  3. Karla 26. ledna 2020

    Dobrý den Tomáši, děkuji za postup. Mám vše převedeno na https, ale u stránek s fotkami mi Chrome stále píše, že spojení s tímto webem není zcela zabezpečené. Dále je uvedeno, že útočníci mohou vidět obrázky…Poradíte mi, kde můžu mít chybu v nastavení a jak ji odstranit? Děkuji a přeji hezký den.

    • Tomáš Ševčík 29. ledna 2020

      Hezký den, Karlo. Pravděpodobně ty obrázky nemají v odkazech https. Mrkněte na 5. bod tohoto návodu. Pokud byste měla stále problém, ozvěte se na info@sevciktomas.cz a mrkneme na to. Tom.

  4. Martina 30. června 2020

    Krásný den :), chci vás poprosit o radu. Https mám už nastavené, ale když otevřu úvodní stránku, tak tam ten zámeček nemám. Na všech ostatních stránkách však ano. Ale když se z nějaké jiné stránky vrátím na úvodní, tak už tam zámeček je taky. Můžete mi prosím poradit, kde asi mám chybu, když se úvodní stránka otevře jako první, že tam zámeček není?
    Děkuji moc za odpověď

    • Tomáš Ševčík 1. července 2020

      Hezký den, Marti. Vypadá to, že tam nemáte nastavené přesměrování a ten první vstup na úvodní stránce máte s „http“ a ne s „https“. Hoďte sem link, mrknu se na to. Tom.

  5. Martina 1. července 2020

    Děkuji za odpověď :). Na těch stránkách zrovna dělám a nejsou ještě hotové. Nerada bych to tu zveřejňovala, můžu vám poslat odkaz na email?

    • Tomáš Ševčík 3. července 2020

      Jasné, pošlete, mrkneme na to. :)
      Tom.

  6. Jakub 6. září 2020

    Ahoj, mám menší problém. Při změn http na https byl můj web shledán nezabezpečeným a tedy nefunkčním. Jde se dostat nějak do administrace worpresu a dát tam zpět http?

    • Jirka 5. října 2020

      Ahoj, podařilo se mi naprosto to samé a jsem v konci… změníl jsem dvě adresy z HTTP na HTTPS a uložil. Přepis v wp-config.php pomohl dostanu se alespoň do administrace, ale na web ne. I když jsem adresu zadal dobře přesměrovává se mi to na hostingový server, jako stránka neexistuje. Ale nemohu pochopitelně editovat ta dvě políčka, když jsem to natvrdo změnil. A ať sebevíc zkouším v myPhpAdmin tak se nemohu dostat přes heslo. Už mi došli nápady jaký heslo to po mě chce. mysqli::real_connect(): (HY000/1045): Access denied for user ‚lordkokman’@’localhost‘ (using password: YES) Prosím jesli je nějaká rada jak se dostat do nějakého souboru a něco přepsat bylo by to moc super. Děkuji.

    • Petr 27. ledna 2021

      Ahoj, stal se mi ten samý problém. Podařilo se ti ho vyřešit, popř. jak?
      Děkuji.

  7. Martin 11. ledna 2021

    Děkuji Vám za kód k přestupu na HTTPS Tomáši, maká skvěle od první sekundy.
    S přátelským pozdravem,

    Martin

  8. katka 14. února 2022

    Dobrý den, přecházím na https na webu https://www.detskysvet.cz v menu (o nás, spolupráce, naše produkty) atd. se mi stále blokují ikonky a menu nelze prokliknout. Jak to napravit?

  9. Vanda 8. září 2022

    Dobrý den,

    řeším to, co již někteří….po kroku 2, čili změny nastavení ve WordPressu na https se nemohu dostat do administrace webu. Hlásí to: Tento web není dostupný. Web xxxx.cz odmítl připojení.
    Nepřišel jste už na to, jak to vyřešit? Děkuji

    • Tomáš Ševčík 9. září 2022

      Hezký den Vando,

      máte na serveru aktivní SSL certifikát? Ozvěte se mi případně do e-mailu info@sevciktomas.cz a mrkneme se na to.

      Tom.

Napište svůj názor