Jak przekierować stronę z http na https
W skrócie
Po instalacji certyfikatu strona nadal otwiera się także przez http://. Przekierowanie 301 sprawia, że każdy trafia na wersję z https. Najprościej włączyć je w panelu hostingu (cPanel, DirectAdmin, Plesk); na serwerze Apache wystarczą trzy linie w pliku .htaccess, a w nginx krótki blok konfiguracji.

Po co przekierowanie
Certyfikat sprawia, że strona działa pod https://, ale nie wyłącza starego adresu z http://. Bez przekierowania część odwiedzających (stare linki, zakładki, ręcznie wpisany adres) dalej łączy się bez szyfrowania i widzi ostrzeżenie przy adresie: w Chrome „Niezabezpieczona”, w Firefoksie „Niezabezpieczone”, w Safari „Brak ochrony”. Wyszukiwarki widzą wtedy dwie kopie tej samej strony. Przekierowanie 301 mówi przeglądarkom i wyszukiwarkom, że strona na stałe przeniosła się pod https://.
Zanim zaczniesz
- Otwórz ręcznie
https://twojadomena.plihttps://www.twojadomena.pl. Oba adresy muszą działać bez ostrzeżenia. Przekierowanie na adres z błędem certyfikatu odetnie stronę wszystkim odwiedzającym. - Jeśli strona po przejściu na https wygląda źle albo coś nie działa, najpierw usuń mieszaną zawartość.
- Przekierowanie nie przeszkadza w potwierdzaniu domeny plikiem przy kolejnych certyfikatach: Let's Encrypt idzie za przekierowaniem na https.
W panelu hostingu
- cPanel: „Domeny” (Domains) → przy domenie przełącznik „Wymuszanie przekierowania HTTPS” (Force HTTPS Redirect). Działa tylko dla domeny z ważnym certyfikatem.
- DirectAdmin: zaznacz „Wymuś SSL z przekierowaniem https” na stronie „Certyfikaty SSL” albo w ustawieniach domeny („Konfiguracja domen”) i zapisz. Opcja wymaga włączonego „Bezpieczny SSL”; jeśli jej nie ma, użyj pliku .htaccess (niżej).
- Plesk: w ustawieniach hostingu domeny („Ustawienia hostingu”, w nowym wyglądzie „Hosting i DNS” → „Hosting”), w części „Bezpieczeństwo”, zaznacz stałe przekierowanie 301 z HTTP na HTTPS (po angielsku „Permanent SEO-safe 301 redirect from HTTP to HTTPS”). Najpierw musi być zaznaczona „Obsługa SSL/TLS” i wybrany certyfikat. W nowszych wersjach Plesk to przekierowanie jest dla nowych domen włączone od razu.
- Inne panele: szukaj opcji „Wymuś HTTPS”, „Przekierowanie na HTTPS” albo „Force HTTPS” w ustawieniach domeny lub SSL. Jeśli jej nie ma, użyj pliku .htaccess.
Plik .htaccess (Apache, większość hostingów)
W katalogu strony (tam, gdzie jest plik index) otwórz plik .htaccess albo utwórz go. Zapisz najpierw kopię starego pliku. Na samym początku dopisz:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Jeśli po dopisaniu strona pokazuje błąd o zbyt wielu przekierowaniach (w Chrome ERR_TOO_MANY_REDIRECTS, w Firefoksie „Pętla przekierowań”), usuń te linie. Tak dzieje się m.in. za Cloudflare w trybie SSL „Flexible”: skoro serwer ma już certyfikat, przełącz w Cloudflare tryb SSL/TLS na „Full (strict)” albo usuń regułę i włącz przekierowanie na HTTPS w Cloudflare.
Własny serwer z nginx
Dodaj osobny blok dla portu 80, który przekierowuje wszystko na https:
server {
listen 80;
server_name twojadomena.pl www.twojadomena.pl;
return 301 https://$host$request_uri;
}
Jeśli konfiguracja ma już blok z listen 80 dla tej domeny, zamień jego zawartość zamiast dodawać drugi. Jeśli domena ma adres IPv6 (rekord AAAA), dopisz też listen [::]:80;. Sprawdź konfigurację poleceniem sudo nginx -t i przeładuj serwer: sudo systemctl reload nginx. Konfigurację certyfikatu dla portu 443 opisujemy w instrukcji dla serwera.
WordPress
W „Ustawienia” → „Ogólne” zmień oba adresy („Adres WordPressa (URL)” i „Adres witryny (URL)”) na https://, żeby linki w stronie prowadziły do wersji z https. Sama zmiana adresów nie przekierowuje jednak wejść z http://: strona nadal się pod nim otworzy. Przekierowanie włącz w panelu hostingu albo w pliku .htaccess (wyżej).
Przekierowanie z www na bez www
Strona powinna mieć jeden adres: z www albo bez. Wybierz jedną wersję, np. https://twojadomena.pl, i przekieruj na nią drugą przekierowaniem 301. Wyszukiwarki widzą wtedy jedną stronę zamiast dwóch kopii. Certyfikat musi jednak obejmować obie nazwy, bo przeglądarka sprawdza go, zanim dostanie przekierowanie. W generatorze wpisz wtedy obie: twojadomena.pl, www.twojadomena.pl.
Plik .htaccess (Apache)
Ten kod przenosi z www na adres bez www i jednocześnie z http na https, jednym przekierowaniem. Wstaw go na początku pliku .htaccess zamiast trzech linii z części Plik .htaccess, nie obok nich, i zamień twojadomena na swoją domenę (kropki z ukośnikiem zostaw):
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.twojadomena\.pl$ [NC]
RewriteRule ^ https://twojadomena.pl%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
nginx
Blok dla portu 80 przekierowuje obie nazwy prosto na adres bez www, a osobny blok dla www na porcie 443 przekierowuje wejścia przez https:
server {
listen 80;
server_name twojadomena.pl www.twojadomena.pl;
return 301 https://twojadomena.pl$request_uri;
}
server {
listen 443 ssl;
server_name www.twojadomena.pl;
ssl_certificate /etc/ssl/twojadomena/fullchain.pem;
ssl_certificate_key /etc/ssl/twojadomena/privkey.pem;
return 301 https://twojadomena.pl$request_uri;
}
W głównym bloku strony (z listen 443 ssl;) zostaw w server_name tylko twojadomena.pl. Potem sudo nginx -t i sudo systemctl reload nginx.
Odwrotnie: z bez www na www
Jeśli wolisz adres z www, w pliku .htaccess zamień nazwy miejscami:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^twojadomena\.pl$ [NC]
RewriteRule ^ https://www.twojadomena.pl%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
W nginx zrób to samo: w obu blokach przekierowania wpisz https://www.twojadomena.pl$request_uri, drugi blok ustaw na server_name twojadomena.pl;, a w głównym bloku zostaw www.twojadomena.pl.
W panelu hostingu
Część paneli ma tę opcję w ustawieniach domeny, np. Plesk jako wybór preferowanej domeny (z www albo bez), a cPanel przy tworzeniu przekierowania pozwala wybrać, czy dotyczy adresu z www. Jeśli panel jej nie ma, użyj pliku .htaccess. Wynik sprawdzisz tak samo jak przekierowanie na https (niżej): curl -I http://www.twojadomena.pl powinno pokazać Location: https://twojadomena.pl/.
Sprawdzenie
Przeglądarki zapamiętują przekierowanie 301, więc sprawdzaj w oknie prywatnym (incognito). Wpisz http://twojadomena.pl (z http) i zobacz, czy adres zmienia się na https://. Na komputerze z terminalem możesz też użyć polecenia curl -I http://twojadomena.pl: w odpowiedzi powinien być kod 301 i linia Location: https://….