Wymuszanie HTTPS — przekierowanie 80→443
Jak wymusić HTTPS dla strony, żeby wejścia na http:// przekierowywały na https://. Przełącznik w ustawieniach domeny w DirectAdmin, HSTS i ręczna konfiguracja .htaccess.
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 robisz to jednym przełącznikiem w ustawieniach domeny. Bardziej zaawansowane opcje to HSTS i 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 ustawienia domeny
W DirectAdmin: Zarządzanie kontami → Domeny i kliknij nazwę domeny. Otworzy się strona Modyfikuj z ustawieniami tej domeny.
Krok 2: Zaznacz „Wymuś SSL z przekierowaniem https” i kliknij ZMIEŃ
W wierszu SSL zaznacz Wymuś SSL z przekierowaniem https i kliknij zielony przycisk ZMIEŃ.
Od tej chwili serwer odpowiada na każde wejście przez
http://przekierowaniem 301 (Moved Permanently) nahttps://.Na tej samej stronie są jeszcze dwie opcje:
- Wymuś przekierowanie — kanoniczny adres z
www.albo bez niego, bez pisania reguł.- HSTS — opisany niżej w sekcji HSTS — krok dalej. DirectAdmin ostrzega: włącz dopiero, gdy certyfikat działa dla wszystkich adresów.
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.
Najprościej włączysz go w DirectAdmin: Domeny → kliknij domenę → HSTS: Włącz ścisłe zabezpieczenia transportu HTTP (HSTS) → ZMIEŃ.
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 — przełącznik per domena. Włącz dla każdej osobno (Domeny → kliknij domenę → SSL: Wymuś SSL z przekierowaniem https → ZMIEŃ).
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ł?
