Jak vynutit HTTPS a přesměrování z www na bez www pomocí .htaccess
Hotové pravidlo pro .htaccess, které přesměruje web na HTTPS a sjednotí adresu s www nebo bez www.
3 minuty čtení 4 kroky
Obsah návodu
Web by měl být dostupný na jedné jediné adrese. Pokud běží zároveň na http:// i https:// a s www i bez něj, vyhledávače to vidí jako čtyři různé weby a návštěvníci mohou skončit na nezabezpečené verzi. Pravidla v souboru .htaccess všechny varianty trvale přesměrují na tu, kterou si zvolíte.
Co potřebujete
- Vystavený SSL certifikát pro doménu i její variantu s www. Bez certifikátu přesměrování na HTTPS skončí chybou v prohlížeči. Certifikát získáte zdarma podle návodu Jak získat certifikát pro stránky a HTTPS?.
- Soubor
.htaccessv kořenové složce webu (složkaweb). Pokud ho nemáte, vytvořte ho podle návodu Jak vytvořit soubor .htaccess. - Přístup k FTP – viz Jak se připojit k webhostingu pomocí FTP.
Postup
- Připojte se přes FTP a stáhněte si soubor
.htaccessze složkyweb. Uložte si jeho kopii. - Otevřete ho v textovém editoru (např. Poznámkový blok, ne Word) a na začátek souboru vložte jedno z pravidel níže. Pokud už soubor obsahuje řádek
RewriteEngine On, nevkládejte ho podruhé. - Soubor uložte a nahrajte zpět na server.
- Otestujte v prohlížeči všechny čtyři varianty adresy (http s www, http bez www, https s www, https bez www). Všechny musí skončit na té zvolené.
Vynucení HTTPS
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Pravidlo přesměruje každý požadavek přes http:// na stejnou adresu přes https:// a zachová doménu i cestu.
Přesměrování z www na bez www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
Přesměrování z bez www na www
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
Kombinace: HTTPS a bez www jedním pravidlem
Nejčastější požadavek – vše přesměrovat na https://vasedomena.cz:
RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^(.*)$ https://vasedomena.cz/$1 [R=301,L]
Varianta pro https://www.vasedomena.cz:
RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.vasedomena.cz/$1 [R=301,L]
Nahraďte vasedomena.cz svou doménou. Kód R=301 znamená trvalé přesměrování, které si prohlížeče i vyhledávače zapamatují.
Ve WordPressu vložte pravidlo nad blok # BEGIN WordPress a zároveň v Nastavení → Obecné nastavte obě adresy webu na zvolenou variantu s https://. Jinak bude WordPress přesměrovávat zpět a vznikne smyčka.
Nejčastější chyby
- Prohlížeč hlásí „příliš mnoho přesměrování“ (smyčka) – nejčastěji se přesměrování kombinuje s dalším pravidlem v
.htaccess, s nastavením v redakčním systému nebo s pluginem, který přesměrovává opačným směrem. Ponechte jen jedno pravidlo. Smyčku může způsobit i cache prohlížeče – otestujte v anonymním okně. - Prohlížeč varuje, že spojení není bezpečné – pro doménu (nebo její variantu s www) není vystaven certifikát. Požádejte o něj podle návodu Jak získat certifikát pro stránky a HTTPS?. Do té doby pravidlo z
.htaccessodstraňte. - Chyba 500 Internal Server Error – v souboru je překlep nebo byl uložen s formátováním (např. z Wordu). Vraťte zálohu a zkopírujte pravidlo znovu. Viz také Co dělat, když chybí soubor .htaccess.
- Stránky se načítají přes HTTPS, ale s varováním „smíšený obsah“ – obrázky a skripty se v šabloně načítají přes
http://. Upravte odkazy v obsahu nebo v databázi nahttps://. - Přesměrování na úplně jinou doménu řeší návod Jak přesměrovat doménu pomocí .htaccess.