Jak wymusić SSL (https) używając .htaccess

Mając zainstalowany na serwerze www moduł mod_rewrite, można w prosty sposób wymusić przekierowanie z protokołu http na szyfrowane połączenie https.
W tym celu należy w pliku .htaccess dodać poniższy kod:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI}

Zmienna HTTPS powinna przyjmować wartość on gdy połączenie jest szyfrowane i off gdy nie jest. Czasami na niektórych serwerach zmienna ta nie jest w ogóle zdefiniowana. W takim przypadku można skorzystać z tego, że standardowo https jest obsługiwany przez serwer na porcie 443. Jeśli połączanie przychodzi na inny port (standardowo 80) wtedy jest to pewnie nieszyfrowany http.

Czyli zamiast odwoływać się do zmiennej HTTPS sprawdzamy wartość zmiennej SERVER_PORT i używamy

RewriteCond %{SERVER_PORT} !443

Oczywiście można zrobić przekierowanie na https tylko dla wybranego pliku lub katalogu.

RewriteEngine On
RewriteCond %{REQUEST_URI} ^\/plik.html$ [OR]
RewriteCond %{REQUEST_URI} ^\/katalog
RewriteCond %{SERVER_PORT} !443
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

 

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

To prevent spam, URLs are not allowed in comments. All comments are moderated and subject to approval.
Aby zapobiec spamowi, adresy URL nie są dozwolone w komentarzach. Wszystkie komentarze są moderowane i podlegają zatwierdzeniu.