Awarie

Kłódka nie działa mimo SSL — mixed content na WordPressie

Certyfikat jest, a przeglądarka pisze „niezabezpieczona”? To mixed content: strona po HTTPS ładuje pliki po HTTP. Jak to znaleźć i naprawić w bazie danych.

Pasek adresu przeglądarki z ostrzeżeniem zamiast kłódki

Kupiłeś certyfikat SSL — albo dostałeś darmowy — a przeglądarka zamiast kłódki pokazuje „Niezabezpieczona” albo przekreśloną kłódkę z ostrzeżeniem. Certyfikat najpewniej działa. Problem nazywa się mixed content (mieszana treść): strona ładuje się po bezpiecznym HTTPS, ale część plików — obrazki, style, skrypty — dalej przychodzi po zwykłym HTTP.

Przeglądarka rozumuje słusznie: skoro choć jeden element jedzie nieszyfrowanym kanałem, całość nie zasługuje na kłódkę.

Znajdź winne pliki w konsoli przeglądarki

Otwórz stronę w Chrome albo Firefoksie i naciśnij F12, potem zakładka Konsola. Szukaj ostrzeżeń w rodzaju:

Mixed Content: The page at 'https://twojadomena.pl/' was loaded over HTTPS,
but requested an insecure image 'http://twojadomena.pl/wp-content/uploads/logo.png'

Każde takie ostrzeżenie wskazuje konkretny plik z adresem http://. Zwykle po pierwszych trzech widać schemat: prawie zawsze to stare adresy zapisane w bazie danych — strona kiedyś działała po HTTP i wszystkie obrazki wstawione w tamtych czasach mają zapisany pełny adres z http://.

Krok 1: ustawienia adresu strony

Wejdź w Ustawienia → Ogólne i sprawdź oba pola: „Adres WordPressa (URL)” i „Adres witryny (URL)”. Oba muszą zaczynać się od https://. Jeśli poprawiasz — najpierw upewnij się, że strona w ogóle działa po HTTPS, bo po zapisaniu WordPress zacznie przekierowywać na nowy adres.

Krok 2: podmień stare adresy w bazie danych

Ręczne poprawianie obrazków wpis po wpisie to droga donikąd — adresy siedzą w tysiącach miejsc. Robi się to hurtowo, wtyczką Better Search Replace:

  1. Zrób kopię bazy danych. Operacja masowo nadpisuje treść — bez kopii nie startuj.
  2. W polu „Szukaj” wpisz http://twojadomena.pl, w polu „Zamień na” — https://twojadomena.pl.
  3. Zaznacz wszystkie tabele i najpierw uruchom z opcją testową (dry run) — wtyczka pokaże, ile wystąpień znajdzie, niczego nie zmieniając.
  4. Jeśli liczby wyglądają sensownie, uruchom na ostro i wyczyść cache.

Wtyczka poprawnie obsługuje zserializowane dane (to te dziwne wpisy z s:52:"..." — zwykła podmiana w phpMyAdmin by je uszkodziła, dlatego nie rób tego SQL-em).

Krok 3: to, czego nie ma w bazie

Jeśli po podmianie konsola dalej pokazuje ostrzeżenia, zostały adresy wpisane poza treścią:

  • motyw i jego ustawienia — logo, tła i fonty wskazane w opcjach motywu; czasem adres http:// siedzi wprost w plikach motywu, zwłaszcza modyfikowanego ręcznie,
  • skrypty zewnętrzne — stare kody statystyk, widżety pogody, liczniki; jeśli dostawca nie wspiera HTTPS, wyrzuć skrypt,
  • Cloudflare w trybie „Flexible SSL” — połączenie szyfrowane tylko do Cloudflare, dalej po HTTP. Przełącz na „Full (strict)”, ale ostrożnie: przy złej konfiguracji originu kończy się to pętlą przekierowań.

Wtyczki typu Really Simple SSL potrafią wymusić HTTPS „w locie”, przepisując adresy przy każdym wyświetleniu. Działa, ale to plaster — baza dalej trzyma stare adresy, a strona robi dodatkową robotę przy każdym wejściu. Lepiej naprawić raz, u źródła.

Dlaczego warto to dokończyć, a nie zignorować

„Przecież strona działa” — działa, ale ostrzeżenie o braku zabezpieczenia w sklepie albo przy formularzu skutecznie odstrasza. Do tego Google traktuje HTTPS jako sygnał rankingowy, a strona z mieszaną treścią potrafi mieć problemy z pozycjami. W skrajnym wypadku — gdy po HTTP ładują się skrypty — przeglądarka po prostu je blokuje i przestają działać suwaki, mapy czy formularze. A jeśli obce skrypty pojawiły się na stronie bez Twojej wiedzy, sprawdź, czy to nie ślad włamania.

Ile to zajmuje

Diagnoza w konsoli — 10 minut. Podmiana adresów w bazie z kopią zapasową i testem — do godziny. Warto zlecić, gdy w grę wchodzi sklep (podmiana w bazie WooCommerce wymaga większej ostrożności), gdy adresy siedzą w plikach motywu albo gdy po drodze jest Cloudflare i nie wiadomo, która warstwa psuje.


Kłódka dalej przekreślona? Naprawimy to u źródła — bezpłatna diagnoza, reakcja w ciągu dwóch godzin, od 120 zł netto za godzinę, płatność po wykonaniu.

  • ssl
  • https
  • mixed content
  • baza danych

Masz taką sytuację u siebie?

Diagnoza i wstępna wycena bezpłatne. Płacisz dopiero po wykonaniu — napisz albo zadzwoń, odpowiadamy do 2 godzin.