Základním kódem pro přesměrování z HTTP na HTTPS verzi pomocí .htaccess souboru je:
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Vysvětlení a zdroj: Stack Overflow
Alternativní možnost
Některé hostingy mají jiné nastavení a kód výše na nich vyvolá nekonečnou smyčku přesměrování. V tom případě mi vždy funguje druhý alternativní zápis:
RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} =http RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Toto přesměrování vyžadují údajně i některé CDN jako třeba CloudFlare (nemám vyzkoušené)
Více info a zdroj: Stack Overflow
Přesměrování na www/non-www verzi
Přesměrování na www/non-www verzi by mělo probíhat odděleně. Nejdřív přesměrování na zabezpečenou verzi, pak teprve řeším www. Zápis přesměrování na HTTPS totiž zachová i www, pokud v URL adrese je. Zápis jednodušší, přehlednější a odolnější na chyby.
Přesměrování na verzi s www
RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Přesměrování na verzi bez www
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
Kompletní zápis přesměrování na HTTPS verzi s www
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Více info a zdroj: Stack Overflow