Wymuszanie HTTPS — przekierowanie 80→443
Jak wymusić HTTPS dla strony — żeby wszystkie wejścia na http:// były automatycznie przekierowane na https://. Checkbox w DA + ręczna konfiguracja .htaccess + HSTS.
Sam fakt, że masz cert SSL, nie wystarcza — jeśli ktoś wpisze http://mojafirma.pl (bez s), serwer może odpowiedzieć starą stroną HTTP, bez szyfrowania. Trzeba wymusić redirect 301 z HTTP na HTTPS. W DirectAdmin to jeden checkbox. Alternatywnie — bardziej zaawansowane: HSTS, ręczna konfiguracja .htaccess.
Co zyskasz
- Wymusisz HTTPS dla swojej domeny — wejście na HTTP zawsze przekieruje na HTTPS.
- Włączysz HSTS (HTTP Strict Transport Security) — przeglądarki nawet nie spróbują HTTP.
- Skonfigurujesz ręcznie przez
.htaccessz bardziej granularną kontrolą.
Wymagania wstępne
- Działający certyfikat SSL dla domeny. Patrz Let's Encrypt.
- Strona dostępna pod HTTPS (przed włączeniem redirectu sprawdź
https://mojafirma.pl— musi działać).
Wskazówka
Najpierw potwierdź że HTTPS działa, dopiero potem włączaj redirect. Inaczej możesz zablokować dostęp do strony, jeśli SSL z jakichś względów nie wystawiło się poprawnie.
Krok 1: Otwórz Certyfikaty SSL
Zarządzanie kontami → Certyfikaty SSL.
Pod sekcją radio buttons (5 trybów wystawienia certu) znajdziesz checkbox „Wymuś SSL z przekierowaniem https" wraz z osobnym przyciskiem Zapisz obok.
Krok 2: Zaznacz checkbox i zapisz
Kliknij checkbox → przycisk Zapisz obok niego.
DA w tle dopisuje regułę do konfiguracji Apache/LiteSpeed:
RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L](Albo równoważną konfigurację LiteSpeed.) Każde żądanie HTTP zostaje przekierowane na HTTPS z kodem 301 (Permanently Moved).
Krok 3: Test
Otwórz
http://mojafirma.pl(bezs!) w incognito. Powinieneś zostać automatycznie przekierowany nahttps://mojafirma.pl.W DevTools (F12) → zakładka Network → odśwież stronę → pierwsza pozycja powinna być 301 z
http://nahttps://.::: callout ok Gotowe. Wszystkie linki przychodzące na HTTP będą teraz prowadziły na HTTPS.
HSTS — krok dalej
HSTS (HTTP Strict Transport Security) to nagłówek HTTP mówiący przeglądarce: „dla tej domeny zawsze używaj HTTPS, nawet jeśli user wpisze HTTP". Przeglądarka cachuje to ustawienie lokalnie i nigdy więcej nie spróbuje HTTP — oszczędza redirect i chroni przed atakami MITM.
Włączenie HSTS przez .htaccess
W katalogu public_html swojej domeny (Menedżer Plików DA), dodaj/edytuj .htaccess:
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
</IfModule>
Wyjaśnienie:
max-age=63072000— pamiętaj przez 2 lata (sekundy)includeSubDomains— stosuj też dla subdomen (*.mojafirma.pl)preload— pozwala dodać domenę do listy preload przeglądarek
Wskazówka
HSTS to commitment na lata. Po włączeniu z
max-age=63072000, przez 2 lata przeglądarka będzie odrzucać HTTP dla Twojej domeny. Jeśli kiedyś chciałbyś wyłączyć HTTPS — nie da się, dopóki cache nie wygaśnie. Najpierw przetestuj z krótkimmax-age=300(5 min), upewnij się że wszystko działa, potem przedłuż.
HSTS Preload (najwyższy poziom ochrony)
Domeny w HSTS Preload list są wbudowane w przeglądarki — Chrome, Firefox, Safari już od pierwszej wizyty stosują HSTS. Aby dodać:
- Włącz HSTS z
max-age=63072000; includeSubDomains; preload - Sprawdź na hstspreload.org czy domena spełnia wymagania
- Złóż wniosek przez ten sam serwis
- Po weryfikacji (kilka dni-tygodni) domena trafia do listy
- Przy najbliższym update Chrome/Firefox — Twoja domena na liście
Ręczna konfiguracja przez .htaccess
Alternatywa do checkboxa DA — większa kontrola. W public_html/.htaccess:
Podstawowy redirect HTTP→HTTPS
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Z wyłączeniem niektórych ścieżek (np. for ACME challenge)
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Wymuszenie HTTPS + non-www (kanoniczny URL)
RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://mojafirma.pl%{REQUEST_URI} [R=301,L]
Wymuszenie HTTPS + www
RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.mojafirma.pl%{REQUEST_URI} [R=301,L]
Test poprawności
ssllabs.com/ssltest — wpisz domenę, sprawdź sekcje:
- Protocol Support — TLS 1.2/1.3 włączone, SSLv3/TLS 1.0 wyłączone
- HTTP → HTTP/2 wspierane
- Strict Transport Security (HSTS) —
max-age=...; includeSubDomains - HSTS Preloading — Eligible (jeśli chcesz dołączyć)
- Mixed Content — czy strona nie ładuje zasobów po HTTP
Ocena A+ to wzorzec. A wystarcza, B/C wymaga poprawek.
Najczęstsze problemy
1. „Po włączeniu wymuszenia strona się nie ładuje"
Przyczyna: SSL nie działa poprawnie. Wyłącz redirect, sprawdź https://mojafirma.pl bezpośrednio. Jeśli pokazuje błąd cert — patrz Problemy SSL.
2. „Redirect pętla (too many redirects)"
Często gdy proxy/CDN (Cloudflare) ma Flexible SSL — Cloudflare wysyła HTTP do Twojego serwera, Twój serwer redirectem mówi „idź na HTTPS", Cloudflare ponownie wysyła HTTP. Pętla.
Rozwiązanie: w Cloudflare → SSL/TLS → Full lub Full (strict).
3. „Mixed content warning — strona pokazuje kłódkę z wykrzyknikiem"
Coś w stronie ładuje się po HTTP — typowo: obrazek, skrypt JS, CSS z hardcodowanym http://. Przeglądarka oznacza jako niezabezpieczone.
Rozwiązanie: w kodzie strony zmień wszystkie http:// na https://. W WordPress: plugin Better Search Replace wymieni w bazie.
4. „Włączyłem HSTS, ale przeglądarka nie pamięta"
- Sprawdź czy nagłówek faktycznie jest wysyłany: F12 → Network → odśwież → response headers.
- Niektóre przeglądarki ignorują HSTS na lokalnych adresach (
localhost,127.0.0.1). - HSTS wymaga valid SSL — jeśli cert ma błąd, HSTS nie zadziała.
5. „Jak wycofać HSTS?"
- Wyślij nagłówek
Strict-Transport-Security: max-age=0przez minimum tak długo, jak był pierwotnymax-age - Czekaj aż przeglądarki klientów odświeżą cache
- Praktycznie: jak ktoś już dostał
max-age=63072000— przez 2 lata nie wycofasz dla niego HTTPS
6. „Mam wiele domen — muszę wymuszać dla każdej?"
W DA — checkbox per domena. Włącz dla każdej osobno (Certyfikaty SSL → wybierz domenę → checkbox).
W .htaccess — reguła w public_html domeny działa dla niej. Subdomeny dziedziczą jeśli mają osobny .htaccess z tą samą regułą.
Słowniczek
- 301 Moved Permanently — kod HTTP oznaczający trwałe przekierowanie. SEO-friendly.
- HSTS (HTTP Strict Transport Security) — nagłówek HTTP wymuszający HTTPS w przeglądarce.
- HSTS Preload — lista domen z HSTS wbudowana w przeglądarkach (Chrome, Firefox, Safari).
- Mixed Content — strona HTTPS ładująca zasoby z HTTP. Przeglądarka ostrzega.
- MITM (Man-in-the-Middle) — atak, w którym ktoś przechwytuje połączenie. HTTPS + HSTS chroni.
Related
Feedback
Czy ten artykuł pomógł?

