Nastavení https ve WordPressu (WP)

POZOR: v tomto návodu dochází k úpravám v kódu webu. Než budete pokračovat, ujistěte se, že máte fungující zálohu webu. Využívejte také funkci Zpět v textových editorech, umožní okamžitě vrátit zpět změny, které způsobily potíže.

Aktivace certifikátu

Jako první si na webhostingu aktivujte HTTPS a vytvořte SSL certifikát. Postup popisuje návod: HTTPS u webhostingu

Nezapomeňte do certifikátu přidat samotnou doménu i subdoménu www. Pokud váš web běží na jiné subdoméně, vložte ji do certifikátu také.

Administrace WP

V dalším kroku musíte zajistit, aby URL s https byla nastavena i v rámci administrace WP. Důležité pro rychlost načítání Vašich stránek ze všech verzí URL je, abyste zvolili hlavní verzi URL např. www.vase-domena.tld. Případně verze bez www.

Tuto URL pak vepíšete do nastavení v administraci WordPress [ Nastavení -> Obecné ] tabulka Základní nastavení

Základní nastavení bázové adresy

Po tomto kroku fungují Vaše stránky na těchto adresách a to nechceme:

  • http://www.vase-domena.tld
  • http://vase-domena.tld
  • https://www.vase-domena.tld
  • https://vase-domena.tld

Cílem je sjednotit ještě před generováním stránek URL adresu ze které na stránky Vaši návštěvníci přistupují.

Ideální stav je dostat všechny návštěvníky na https://vase-domena.tld (zvoleno v administraci WP) ještě před zobrazením stránek. Zároveň se tím vyhnete riziku penalizace ze strany vyhledávačů (Google, Seznam), protože se vyhnete duplicitnímu obsahu. Chceme tedy dosáhnout, aby přesměrování např. z https://www.vase-domena.tld na https://vase-domena.tld nedělala Vaše aplikace (WP), ale server, který to umí výrazně rychleji. Toho dosáhneme přidáním pravidel do .htaccess

Nastavení .htaccess

Přes FTP ( https://webftp.wedos.net/ nebo libovolný FTP klient) najděte umístění souboru .htaccess. Půjde o .htaccess, který patří konkrétní instalaci WP. V našem případě, kdy máme doménu vase-domena.tld bude .htaccess umístěn buďto ve složce www/ a nebo ve složce www/domains/vase-domena.tld (toto umístění je běžnější).

Výchozí soubor .htaccess pro WordPress bude vypadat takto

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

Pravidla pro přesměrování umístěte nad značku # BEGIN WordPress (pokud je k dispozici), tím předejdete jejich přepsání při aktualizaci WordPressu.

# BEGIN HTTPS WEDOS
RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R=301,L] 
Header set Content-Security-Policy "upgrade-insecure-requests;"
# END HTTPS WEDOS 

Celé znění .htaccess souboru

Minimálně tato pravidla by soubor měl obsahovat. Může obsahovat i další, to nebývá problém. Pokud tam máte jiná, než v tomto návodu doporučená pravidla pro přesměrování na https, smažte je.

# BEGIN HTTPS WEDOS
RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R=301,L] 
Header set Content-Security-Policy "upgrade-insecure-requests;"
# END HTTPS WEDOS 

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

Po přechodu na HTTPS

Po přechodu na HTTPS se může vyskytnout problém a stránky se hlásí jako nezabezpečené. To je způsobeno tím, že např. obrázky či skripty načítají stále přes protokol HTTP

Problém lze vyřešit přidáním příkazu do .htaccess. Pod RewriteEngine On  ( v pravidlech výše již uvedeno )

Header set Content-Security-Policy "upgrade-insecure-requests;"

Možné problémy

Not Found on Accelerator

Description: Your request on the specified host was not found. Check the location and try again.

Pravděpodobně nemáte aktivní HTTPS na webhostingu, nejprve si jej aktivujte.

Mixed Content

V případě, že Vaše stránky po přechodu HTTPS stále stále zobrazuji jako nezabezpečené, tak to může být způsobeno tím, že některé části stránky se stále načítají přes HTTP protokol. Vzniká chyba Mixed Content, kdy kombinujete HTTP a HTTPS protokoly na jedná stránce. Možný výpis chyby (v konzoli) níže.

Mixed Content: The page at 'https://vase-domena.tld' was loaded over HTTPS, but requested an insecure image 'http://xyz.abc.tld/temp/wp-content/uploads/.../../2018/05/i....606765_1280.jpg'. This content should also be served over HTTPS.

Od verze WordPressu 5.7 již tuto chybu můžete vyřešit v rámci administrace WordPressu. WordPress obsahuje funkci kontroly svého stavu. Více je to popsáno zde WordPress | 2. Stav webu. Zde pak najdete i možnost opravy chyby Mixed Content jedním kliknutím.

řešení problému Mixed Content (přechod z HTTP na HTTPS WordPress)