Masz aktywny certyfikat SSL, a przeglądarka i tak pokazuje przekreśloną kłódkę albo ostrzeżenie „Niepełne zabezpieczenie"? To mixed content, czyli mieszana zawartość. W tym artykule znajdziesz, skąd się bierze, jak namierzyć winne zasoby i jak je naprawić na dobre.
Czym jest mixed content
Strona ładuje się po HTTPS, ale część jej zasobów (obrazki, skrypty, style, fonty) wciąż wskazuje na adresy http://. Przeglądarka traktuje takie zasoby jako niezabezpieczone i dlatego nie pokazuje pełnej kłódki, mimo że certyfikat jest poprawny. Najczęściej to pozostałość po przejściu strony z http na https: adresy zostały zapisane w bazie lub na sztywno w plikach.
Krok 1: zdiagnozuj, co ładuje się po http
- Otwórz swoją stronę w przeglądarce (Chrome lub Firefox).
- Naciśnij
F12, aby otworzyć narzędzia deweloperskie, i przejdź do zakładki Console (Konsola). - Odśwież stronę. Poszukaj ostrzeżeń ze słowem
Mixed Content. Przeglądarka wypisuje przy nich pełny adres każdego zasobu ładowanego po http, na przykładhttp://twojadomena.pl/wp-content/uploads/logo.png. - Zapisz sobie te adresy. Pokazują dokładnie, co jeszcze trzeba przestawić na https.
Krok 2: zamień adresy http na https w bazie
Najczęstsza przyczyna to stare adresy zapisane w bazie danych. Rozwiązuje je jednorazowa zamiana http://twojadomena.pl na https://twojadomena.pl w całej bazie, opisana krok po kroku w artykule o włączaniu HTTPS dla WordPressa (wtyczka Better Search Replace lub polecenie WP-CLI). Zanim ją uruchomisz, wykonaj snapshot bazy w zakładce Snapshot.
Po zamianie odśwież stronę i ponownie sprawdź konsolę. Większość ostrzeżeń zniknie.
Krok 3: popraw twarde linki w motywie i widgetach
Jeśli w konsoli zostały pojedyncze zasoby po http, są zwykle wpisane na stałe (na twardo) w:
- ustawieniach motywu (logo, favicon, obrazek tła, adresy w customizerze),
- widgetach i blokach HTML, gdzie ktoś wkleił pełny adres
http://, - polach konfiguracji wtyczek (np. slidery, galerie, mapy).
Wejdź w te miejsca w kokpicie WordPressa i popraw adres z http:// na https:// (albo usuń http: i zostaw //, żeby zasób ładował się tym samym protokołem co strona). Zapisz zmiany i sprawdź konsolę jeszcze raz.
Krok 4: wyczyść cache po poprawkach
Serwer buforuje gotowe strony w NGINX Cache, więc po poprawkach odwiedzający (i Ty) mogą wciąż widzieć starą wersję z adresami http. Wyczyść cache:
- Zaloguj się do panel.jdm.pl → Hosting → przy stronie kliknij Szczegóły → zakładka Cache.
- Na karcie NGINX Cache kliknij Wyczyść Cache.

- Odśwież stronę w przeglądarce z pominięciem jej pamięci:
Ctrl+Shift+R(na MacuCmd+Shift+R).
Najczęstsze problemy
Naprawiłem adresy, a kłódka dalej jest przekreślona.
To najczęściej cache. Kliknij Wyczyść Cache w zakładce Cache i odśwież stronę przez Ctrl+Shift+R. Dopiero wtedy sprawdź konsolę ponownie.
W konsoli zostało jedno ostrzeżenie z adresu innej domeny.
To zasób wstawiany z zewnętrznego serwisu, który nie obsługuje HTTPS (np. stary licznik czy baner). Wymień go na wersję po https albo usuń ze strony. Jednego takiego zasobu nie da się naprawić po Twojej stronie.
Czy wtyczka Really Simple SSL nie załatwi tego za mnie?
Odradzamy. Ta wtyczka podmienia adresy w locie przy każdym ładowaniu strony, co jest stałym, niepotrzebnym obciążeniem. Jednorazowa zamiana w bazie (Krok 2) jest szybsza i trwała.