Jak naprawić błędy mixed content po migracji na HTTPS

Spis treści

Wprowadzenie – Przyczyny i skutki problemów z mixed content po migracji na HTTPS

Migracja na HTTPS to kluczowy krok w zabezpieczaniu strony internetowej, ale często prowadzi do problemów z mixed content, które mogą podważyć wysiłki wdrożenia SSL. Mixed content występuje, gdy strona ładowana przez bezpieczne połączenie HTTPS zawiera zasoby (obrazy, skrypty, style) ładowane przez niebezpieczne połączenie HTTP.

Przeglądarki blokują m.in. niezabezpieczone skrypty, style i ramki. Niektóre obrazy, pliki audio i wideo próbują automatycznie pobrać przez HTTPS; jeśli zasób nie jest tam dostępny, może się nie wyświetlić. Wyjątkiem są m.in. obrazy w srcset oraz zasoby wskazane adresem IP, które mogą zostać zablokowane.

Poniżej znajdziesz sposób diagnozy i naprawy mieszanej zawartości oraz wskazówki dotyczące przekierowań i testowania HTTPS.

Identyfikacja zasobów ładowanych przez niebezpieczne połączenia

Zanim zaczniesz naprawiać problemy z mixed content, musisz dokładnie zidentyfikować wszystkie problematyczne zasoby. Oto najskuteczniejsze metody diagnostyczne:

Metoda 1: Narzędzia deweloperskie przeglądarki

Narzędzia deweloperskie w przeglądarkach to pierwsze narzędzie, które powinieneś użyć:

  1. Otwórz stronę w przeglądarce Chrome lub Firefox
  2. Naciśnij F12, aby otworzyć narzędzia deweloperskie
  3. Przejdź do zakładki Console
  4. Szukaj komunikatów o mixed content (zazwyczaj w kolorze czerwonym lub żółtym)
  5. W zakładce Network odśwież stronę i sprawdź adresy oraz statusy żądań
  6. Zanotuj adres i źródło problemu; sprawdź również zasoby ładowane po interakcji

Metoda 2: Narzędzia online do sprawdzania mieszanej zawartości

Użyj specjalistycznych narzędzi online do analizy mieszanej zawartości:

  • Why No Padlock? – skanuje stronę i identyfikuje problemy z SSL
  • Qualys SSL Labs – zaawansowana analiza konfiguracji SSL/TLS

Metoda 3: Wtyczki WordPress do wykrywania mieszanej zawartości

Wtyczki mogą pomóc w diagnozie lub tymczasowym przepisywaniu adresów, ale nie zastępują poprawienia ich u źródła. Przed instalacją sprawdź aktualność, zgodność i zakres działania narzędzia:

  • SSL Insecure Content Fixer – pomaga poprawiać adresy w generowanej treści

Typowe problemy z mieszaną zawartością:

  • Obrazy i media – np. zasoby osadzone w starszych treściach
  • Skrypty JavaScript – mogą być blokowane przez przeglądarki
  • Pliki CSS – wpływają na wygląd strony
  • IFrame i embedy – często z zewnętrznych serwisów
  • Czcionki webowe – mogą nie ładować się poprawnie

Skanowanie bazy danych w poszukiwaniu starych adresów URL HTTP

Baza danych często zawiera stare adresy URL HTTP, które powodują problemy z mieszaną zawartością. Oto jak je znaleźć i naprawić:

Krok 1: Przygotowanie kopii zapasowej

  1. Zrób pełną kopię zapasową bazy danych przed modyfikacją
  2. Utwórz kopię zapasową plików strony
  3. Przetestuj proces przywracania kopii
  4. Pracuj na środowisku staging, jeśli to możliwe

Krok 2: Identyfikacja tabel zawierających adresy URL HTTP

Najczęstsze tabele zawierające adresy URL w WordPress:

  • wp_options – ustawienia strony i konfiguracja
  • wp_posts – treść wpisów i stron
  • wp_postmeta – dodatkowe dane wpisów
  • wp_comments – komentarze użytkowników

Krok 3: Wyszukiwanie adresów URL HTTP przez SQL

Przykładowe zapytania tylko wyszukują tekst, także wewnątrz pola. Dostosuj prefiks tabel do instalacji; wyniki mogą zawierać dane wrażliwe. Nie każdy znaleziony adres jest zasobem ładowanym na stronie.

Wyszukiwanie w tabeli wp_options:

SELECT option_name FROM wp_options WHERE option_value LIKE '%http://%';

Wyszukiwanie w tabeli wp_posts:

SELECT ID FROM wp_posts WHERE post_content LIKE '%http://%';

Wyszukiwanie w tabeli wp_postmeta:

SELECT meta_id FROM wp_postmeta WHERE meta_value LIKE '%http://%';

Krok 4: Użycie wtyczek do masowej zamiany adresów URL

Użyj narzędzia obsługującego dane serializowane, np. Better Search Replace, po sprawdzeniu jego zgodności z instalacją. Wybierz właściwe tabele, wykonaj próbę bez zapisu i przeanalizuj wynik. Nie zamieniaj automatycznie wszystkich wystąpień http://: niektóre adresy mogą należeć do innych usług lub mieć inne znaczenie.

Krok 5: Zamiana przez WP-CLI

W katalogu właściwej instalacji, po sprawdzeniu kopii, wykonaj próbę dla własnej domeny:

wp search-replace 'http://example.com/' 'https://example.com/' --skip-columns=guid --dry-run

Zastąp domenę przykładową własną i sprawdź raport. Po zaakceptowaniu zakresu uruchom to samo polecenie bez --dry-run. WP-CLI obsługuje dane serializowane; domyślnie obejmuje tabele zarejestrowane w WordPressie, a w multisite bieżącą witrynę. Adresy bez końcowego ukośnika oraz niestandardowe tabele mogą wymagać osobnej analizy. Zwykła zamiana SQL może uszkodzić dane serializowane.

Poprawka zakodowanych na sztywno adresów URL w plikach motywu i wtyczek

Zakodowane na sztywno adresy URL w plikach motywu i wtyczek to częste źródło problemów z mieszaną zawartością. Oto jak je znaleźć i naprawić:

Krok 1: Identyfikacja plików z zakodowanymi na sztywno adresami URL

Najczęstsze lokalizacje zakodowanych na sztywno adresów URL:

  • Pliki motywu – header.php, footer.php, functions.php
  • Pliki wtyczek – główny plik wtyczki, pliki konfiguracyjne
  • Pliki JavaScript – skrypty z bezpośrednimi URL-i
  • Pliki CSS – style z odwołaniami do zasobów HTTP

Krok 2: Wyszukiwanie zakodowanych na sztywno adresów URL

Metoda 1: Wyszukiwanie w plikach projektu

  1. Połącz się przez SFTP lub pracuj na lokalnej kopii plików
  2. Wyszukaj adres wskazany w konsoli w plikach motywu, CSS i JavaScript
  3. Sprawdź także ustawienia wtyczki lub kod osadzony w edytorze

Metoda 2: Wyszukiwanie przez SSH

W katalogu instalacji możesz wyszukać konkretny adres w wp-content: grep -RFn 'http://example.com/' wp-content. WP-CLI search-replace przeszukuje bazę, nie pliki.

Krok 3: Poprawka zakodowanych na sztywno adresów URL w motywie

Najlepsze praktyki dla motywów:

  • Używaj funkcji WordPress do generowania adresów URL
  • Zastąp zakodowane na sztywno adresy URL funkcjami get_site_url(), home_url()
  • Dla zewnętrznych zasobów stosuj sprawdzone adresy HTTPS; jeśli dostawca ich nie obsługuje, zastąp zasób lub go usuń

Krok 4: Poprawka zakodowanych na sztywno adresów URL w wtyczkach

Bezpieczne modyfikacje wtyczek:

  1. Utwórz motyw potomny, jeśli modyfikujesz funkcje motywu
  2. Użyj filtrów i akcji WordPress do nadpisania funkcji
  3. Unikaj bezpośredniej modyfikacji plików wtyczek
  4. Stwórz własną wtyczkę dla customowych funkcji

Krok 5: Użycie funkcji WordPress do dynamicznych adresów URL

Rekomendowane funkcje WordPress:

  • home_url() – URL strony głównej
  • site_url() – URL instalacji WordPress
  • get_template_directory_uri() – URL katalogu motywu
  • plugins_url() – URL katalogu wtyczek
  • content_url() – URL katalogu wp-content

Jeśli interesuje Cię kompleksowe zabezpieczenie WordPress, polecam przeczytać artykuł: Jak wdrożyć nagłówki bezpieczeństwa HTTP w WordPressie – zwiększ bezpieczeństwo strony, gdzie znajdziesz więcej szczegółów na temat technicznych aspektów zabezpieczania strony.

Konfiguracja przekierowań z HTTP na HTTPS na poziomie serwera

Po potwierdzeniu, że certyfikat i witryna działają poprawnie przez HTTPS, skonfiguruj przekierowanie HTTP do wybranej wersji domeny w panelu hostingu lub konfiguracji serwera. Zachowaj ścieżkę i parametry adresu. Po testach zastosuj przekierowanie stałe, np. 301.

Reguły zależą od środowiska: Apache może korzystać z .htaccess, natomiast Nginx go nie obsługuje. Przy proxy lub CDN ustal, która warstwa odpowiada za przekierowanie, aby uniknąć pętli. Cloudflare Full (strict) wymaga poprawnego certyfikatu na serwerze źródłowym i dotyczy połączenia z nim; samo ustawienie nie zastępuje przekierowania. Sprawdź HTTP, HTTPS oraz warianty www i bez www. Przekierowanie nie zastępuje poprawienia adresów zasobów w treści.

Aktualizacja ustawień WordPress do pracy z HTTPS

Po skonfigurowaniu przekierowań serwera, musisz zaktualizować ustawienia WordPress, aby w pełni wspierały HTTPS:

Krok 1: Aktualizacja adresów URL w ustawieniach WordPress

Metoda 1: Przez panel administracyjny

  1. Zaloguj się do panelu WordPress
  2. Przejdź do Ustawienia → Ogólne
  3. Zaktualizuj Adres URL witryny (URL) na https://
  4. Zaktualizuj Adres URL WordPress (URL) na https://
  5. Kliknij Zapisz zmiany

Jeśli pola są niedostępne, adresy mogą być ustawione w wp-config.php. Przed zmianą sprawdź konfigurację i kopię zapasową: błędny adres może uniemożliwić logowanie.

Krok 2: Aktualizacja ustawień multisite

W multisite sprawdź konfigurację sieci i adresy poszczególnych witryn. Zakres zamiany w bazie dobierz osobno do każdej instalacji, a następnie przetestuj domeny i logowanie.

Krok 3: Wymuszenie HTTPS w panelu administracyjnym

Sprawdź, czy logowanie i panel działają przez HTTPS. Przy proxy poprawne rozpoznawanie protokołu wymaga zaufanej konfiguracji serwera; błędna może powodować pętle przekierowań.

Krok 4: Aktualizacja ustawień CDN

Konfiguracja CDN dla HTTPS:

  • Sprawdź HTTPS zarówno między przeglądarką a CDN, jak i między CDN a serwerem źródłowym
  • Po zmianach wyczyść odpowiednie pamięci podręczne i sprawdź rzeczywiste adresy zasobów

Krok 5: Aktualizacja ustawień wtyczek

Najczęstsze wtyczki wymagające aktualizacji:

  • Wtyczki cache – wyczyść cache i zaktualizuj URL
  • Wtyczki SEO – zaktualizuj mapy strony i ustawienia
  • Integracje i e-commerce – sprawdź adresy powrotu i webhooków zgodnie z dokumentacją dostawcy; testuj płatności w bezpiecznym środowisku testowym

Wdrożenie nagłówków HSTS dla wymuszenia bezpiecznych połączeń

HTTP Strict Transport Security (HSTS) informuje przeglądarkę przez nagłówek otrzymany po HTTPS, aby przez określony czas łączyła się z domeną wyłącznie przez HTTPS. Ogranicza ryzyko późniejszego użycia HTTP, ale bez preload nie chroni pierwszego połączenia przed otrzymaniem nagłówka i nie zastępuje naprawy adresów zasobów z innych domen.

HSTS jest opcjonalny. Przed wdrożeniem sprawdź certyfikat, przekierowania i dostępność całej witryny, a następnie zacznij od krótkiego czasu max-age. Opcję includeSubDomains rozważ dopiero po potwierdzeniu, że wszystkie obecne i przyszłe subdomeny mogą korzystać z HTTPS. Preload to osobna, trudna do szybkiego wycofania decyzja obejmująca subdomeny. Usunięcie nagłówka nie cofa natychmiast polityki zapamiętanej przez przeglądarki; przygotuj plan wycofania i sprawdź aktualne wymagania listy preload przed zgłoszeniem.

Testowanie poprawności konfiguracji HTTPS za pomocą narzędzi online

Po wdrożeniu wszystkich zmian należy dokładnie przetestować konfigurację HTTPS. Oto najlepsze narzędzia do testowania:

Narzędzie 1: Qualys SSL Labs SSL Test

Cechy charakterystyczne:

  • Kompleksowa analiza konfiguracji SSL/TLS
  • Ocena od A do F z szczegółowym raportem
  • Sprawdzanie protokołów, szyfrów i certyfikatów
  • Identyfikacja potencjalnych problemów bezpieczeństwa

Jak używać:

  1. Wejdź na SSL Labs SSL Server Test
  2. Wpisz adres swojej strony
  3. Poczekaj na zakończenie testu
  4. Przeanalizuj wyniki i rekomendacje

Narzędzie 2: Why No Padlock?

Funkcje:

  • Skanowanie strony pod kątem problemów z SSL
  • Identyfikacja mixed content
  • Sprawdzanie certyfikatów i łańcuchów
  • Analiza problemów z wyświetlaniem ikony kłódki

Narzędzie 3: SSL Checker by Comodo

Zalety:

  • Szybkie skanowanie certyfikatu SSL
  • Sprawdzanie ważności certyfikatu
  • Weryfikacja instalacji SSL
  • Identyfikacja problemów z konfiguracją

Narzędzie 4: Google Search Console

Testowanie w GSC:

  1. Zaloguj się do Google Search Console
  2. Sprawdź raport indeksowania stron HTTPS i użyj narzędzia do sprawdzania adresu URL
  3. Traktuj wynik jako uzupełnienie testów w przeglądarce, nie pełny skan mixed content

Narzędzie 5: Narzędzia deweloperskie przeglądarki

Testowanie w przeglądarce:

  1. Otwórz stronę w trybie incognito
  2. Otwórz narzędzia deweloperskie (F12)
  3. Sprawdź zakładkę Security
  4. Przeanalizuj zakładkę Console pod kątem błędów

Checklista testowania HTTPS:

  • Certyfikat SSL – ważny, poprawnie zainstalowany
  • Przekierowania – wszystkie HTTP przekierowują na HTTPS
  • Mixed content – brak zasobów ładowanych przez HTTP
  • HSTS – jeśli został włączony, nagłówek jest zgodny z zamierzoną polityką
  • Formularze – wszystkie używają HTTPS
  • Linki wewnętrzne – wszystkie prowadzą do HTTPS
  • Zewnętrzne zasoby – działają przez HTTPS

Monitorowanie i automatyczne wykrywanie nowych problemów z mieszaną zawartością

Po zmianie motywu, wtyczki, integracji lub treści sprawdź kluczowe podstrony w konsoli przeglądarki, również po interakcji z elementami strony. Regularnie kontroluj ważność certyfikatu i dostępność HTTPS; alert o certyfikacie nie wykrywa jednak automatycznie mixed content.

Jeśli używasz skanera, sprawdź, czy obsługuje renderowanie JavaScript, wymagane logowanie i wybrane podstrony. Żaden pojedynczy skan nie musi obejmować wszystkich stanów witryny. Częstotliwość kontroli dopasuj do skali zmian i znaczenia serwisu.

Podsumowanie – Zapewnienie pełnej zgodności z HTTPS dla bezpieczeństwa i SEO

Usunięcie mixed content ogranicza ryzyko związane z niezabezpieczonymi zasobami i pomaga uniknąć błędów wyświetlania. Może także ułatwić prawidłowe renderowanie strony, ale nie gwarantuje określonych pozycji ani pełnego bezpieczeństwa.

Najważniejsze kroki do sukcesu:

  1. Identyfikacja – dokładne zdiagnozowanie wszystkich problemów
  2. Naprawa – systematyczne rozwiązywanie problemów z mieszaną zawartością
  3. Konfiguracja – prawidłowe ustawienia serwera i WordPress
  4. Testowanie – weryfikacja poprawności wdrożenia
  5. Monitorowanie – ciągła kontrola i prewencja

Po naprawie wyczyść pamięci podręczne i sprawdź najważniejsze ścieżki użytkowników oraz zasoby ładowane dynamicznie.

Potrzebujesz pomocy z mixed content po migracji na HTTPS? Skontaktuj się z nami, aby zdiagnozować problematyczne zasoby i poprawić konfigurację witryny.