Single post

.htaccess přesměrování na HTTPS zabezpečenou verzi

Přesměrování na HTTPS pomocí souboru .htaccess

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

Write a Comment

Your email address will not be published. Required fields are marked *