Przejdź do treści

Ustawienia plików cookie

Prosimy wybrać, na które rodzaje plików cookie Państwo zezwalają. Wybór można zmienić w dowolnym momencie w Ustawieniach plików cookie na dole każdej strony. Polityka prywatności

Niezbędne

Zawsze włączone

Potrzebne do logowania, zachowania koszyka i zapamiętania wyborów. Są zawsze włączone.

Jakie pliki cookie?
  • weboke_sessie, weboke_klant, weboke_remember: sesja i pozostanie zalogowanym
  • weboke_basket: koszyk
  • wkBtwIncl: wyświetlanie cen z VAT lub bez VAT
  • wok_cookies: wybór dotyczący plików cookie, 12 miesięcy

Mierzą, która reklama prowadzi do odwiedzin lub zamówienia, abyśmy nie płacili za reklamy, które nic nie dają.

Jakie pliki cookie?
  • Google Ads przez Google Tag Manager (_gcl_au, _gcl_aw), do 90 dni
  • OpenAI Ads, reklamy w ChatGPT
  • wok_aff: przez którego partnera trafili Państwo do nas (program partnerski), 60 dni

4,6

Kraj i język

Każdy kraj ma własną stronę z cenami i stawką VAT tego kraju.

Wyświetl

www, przekierowania i treści mieszane

Moduł 3: Adres, https i użytkownicy · Czas czytania: 9 minut

Cel lekcji: Po tej lekcji będą Państwo potrafili wybrać jeden adres główny, skierować do niego wszystkie warianty jednym przekierowaniem oraz wykryć i usunąć treści mieszane.

Kluczowe pojęcia: adres kanoniczny, 301 i 308, łańcuch przekierowań, treści mieszane (mixed content), wyszukiwanie i zamiana w bazie danych, dane serializowane

Cztery adresy, jedna strona

Państwa strona internetowa jest dostępna pod czterema adresami:

http://example.com
http://www.example.com
https://example.com
https://www.example.com

Dla odwiedzającego nie ma to znaczenia, ale dla wyszukiwarek są to cztery różne adresy z tą samą treścią. Również pliki cookie (na przykład cookie logowania) obowiązują dla konkretnej nazwy: kto zaloguje się na www, nie jest zalogowany na domenie bez www. Dlatego wybierają Państwo jeden adres kanoniczny (adres główny) i przekierowują do niego pozostałe trzy.

Który adres Państwo wybiorą, to kwestia gustu (lekcja 2.1). Ważne jest, aby adres główny był wszędzie taki sam: w DNS, w certyfikacie, w Ustawienia > Ogólne (lekcja 3.1) oraz w przekierowaniach.

Przekierowanie kodem 301, w jednym kroku

Przekierowanie to odpowiedź serwera: "ta strona znajduje się gdzie indziej". Przeglądarka sama przechodzi wtedy pod nowy adres. Kod informuje, jakiego rodzaju jest to przekierowanie:

KodZnaczenieZastosowanie
301Przeniesiono na stałeStandardowy wybór dla przejścia z http na https oraz z www na domenę bez www (lub odwrotnie)
308Na stałe, a metoda (na przykład wysłanie formularza) pozostaje ta samaRównież można go użyć w tym celu; przeglądarki i wyszukiwarki traktują go jak 301
302 lub 307TymczasowoTylko dla czegoś, co naprawdę jest tymczasowe, na przykład strony konserwacji

Stałe przekierowanie informuje wyszukiwarki, że nowy adres jest tym właściwym. Przy tymczasowym zapamiętują one nadal stary adres.

Proszę zwrócić uwagę również na łańcuch. Załóżmy, że adresem głównym jest https://example.com. Wtedy chcemy uzyskać:

http://www.example.com   301  https://example.com/
http://example.com       301  https://example.com/
https://www.example.com  301  https://example.com/
https://example.com      200

Każdy wariant trafia na adres główny w jednym kroku. Co często się zdarza:

http://www.example.com   301  https://www.example.com/
https://www.example.com  301  https://example.com/

To działa, ale kosztuje dodatkowy krok (dodatkowy czas oczekiwania, zwłaszcza na urządzeniach mobilnych) i dodatkowe nawiązanie połączenia TLS. Gorsza jest pętla: serwer WWW przekierowuje na https, WordPress przekierowuje z powrotem na http, ponieważ adresy w ustawieniach nadal zaczynają się od http, a przeglądarka zgłasza "zbyt wiele przekierowań". Dwie konfiguracje działają wtedy przeciwko sobie. Proszę zadbać o to, aby przekierowanie na https wykonywał tylko jeden element (serwer WWW albo panel), a adresy w WordPressie były już ustawione na adres główny.

WordPress również sam przekierowuje: jeśli ktoś wywoła https://www.example.com/contact/, a adresem witryny jest https://example.com, WordPress przekieruje na https://example.com/contact/. Działa to jednak tylko wtedy, gdy żądanie dotrze do WordPressa, czyli gdy serwer WWW kieruje nazwę www również do tej strony.

Treści mieszane

Treści mieszane (mixed content) to strona https, która ładuje elementy przez http://: obrazek, arkusz stylów, skrypt, czcionkę lub osadzony film. Przeglądarka uznaje to za niebezpieczne, ponieważ takie elementy mogą zostać zmienione w trakcie przesyłania.

  • Skrypty, arkusze stylów i ramki iframe ładowane przez http są blokowane przez przeglądarki. Strona wygląda wtedy na uszkodzoną albo jakaś funkcja nie działa.
  • Obrazy, audio i wideo ładowane przez http nowoczesne przeglądarki próbują automatycznie pobrać przez https; jeśli to się nie uda, zostają zablokowane. Kłódka może wtedy pokazywać ostrzeżenie.

Skąd się to bierze:

  1. Stare linki w treści: strona, która wcześniej działała na http, ma w tysiącach wpisów <img src="http://example.com/wp-content/uploads/...">. WordPress zapisuje te linki dosłownie w bazie danych.
  2. Ustawienia motywu lub wtyczki z pełnym adresem, na przykład logo lub tło z http://.
  3. Zewnętrzne elementy z innej strony, dostępne wyłącznie przez http. Trzeba je zastąpić lub usunąć.
  4. Adresy w Ustawienia > Ogólne, które nadal zaczynają się od http (lekcja 3.1).

Jak to znaleźć

Proszę otworzyć stronę, nacisnąć F12 i zajrzeć do karty Konsola. Przeglądarka zgłasza każdą treść mieszaną wraz z adresem danego elementu. Można też przeszukać kod źródłowy strony (Ctrl+U) pod kątem src="http:// i href="http://. Zwykłe linki do innych stron w tekście (<a href="http://...">) nie powodują treści mieszanych; chodzi o elementy, które strona ładuje.

Wyszukiwanie i zamiana, ale prawidłowo

Rozwiązaniem problemu starych linków w treści jest zastąpienie w bazie danych wszystkich wystąpień http://example.com przez https://example.com. Kusi polecenie SQL w rodzaju:

UPDATE wp_options SET option_value = REPLACE(option_value, 'http://example.com', 'https://example.com');

Prosimy tego nie robić. Wiele ustawień motywów, wtyczek i widżetów jest zapisanych w postaci serializowanej. Wygląda to tak:

s:27:"http://example.com/logo.png";

Zapis s:27 oznacza: tutaj następuje tekst o długości 27 znaków. Po prostej zamianie tekst ma 28 znaków (doszło s), ale nadal widnieje 27. PHP nie potrafi wtedy odczytać wartości i ustawienie po cichu przestaje działać: puste menu, zniknięte logo, brakujące widżety.

Proszę użyć narzędzia, które aktualizuje te długości, i zawsze najpierw wykonać kopię zapasową (lekcja 8.1): wyszukiwanie i zamiana nie ma kosza.

  • WP-CLI: najpierw sprawdzić, potem wykonać. Proszę przejść w terminalu do katalogu z WordPressem i najpierw uruchomić przebieg próbny (pierwszy wiersz), a dopiero potem właściwy (drugi wiersz).
wp search-replace 'http://example.com' 'https://example.com' --skip-columns=guid --dry-run
wp search-replace 'http://example.com' 'https://example.com' --skip-columns=guid

Dzięki --dry-run widzą Państwo, ile zamian zostałoby wykonanych w każdej tabeli, bez wprowadzania jakichkolwiek zmian. --skip-columns=guid pozostawia w spokoju stałe identyfikatory wpisów (kolumna guid); WordPress zaleca, aby nigdy ich nie zmieniać. Bez dodatkowej opcji WP-CLI działa tylko na tabelach WordPressa. Jeśli wtyczka ma własne tabele z tym samym prefiksem, proszę dodać --all-tables-with-prefix. Opcji --all-tables proszę używać tylko wtedy, gdy wiedzą Państwo dlaczego: obejmuje ona każdą tabelę w bazie danych, także tabele innej strony lub aplikacji.

  • Wtyczka do wyszukiwania i zamiany, która obsługuje dane serializowane (w katalogu wtyczek na wordpress.org jest ich kilka). Również tutaj proszę najpierw użyć trybu próbnego, a potem ponownie usunąć wtyczkę.

Proszę nigdy nie zamieniać czegoś takiego jak example.com bez poprzedzającego http:// lub https://: w ten sposób zmienią Państwo również adresy e-mail i inne teksty. Cały sposób postępowania, także dla osób bez dostępu do terminala, opisuje artykuł w bazie wiedzy o wyszukiwaniu i zamianie w bazie danych WordPressa (patrz Dalsza lektura).

W praktyce: jak to wygląda w panelu

Jako przykład używamy DirectAdmin. Inne panele mają podobny przełącznik dla opcji "zawsze https".

  1. W ustawieniach domeny proszę włączyć Wymuś SSL z przekierowaniem https (lekcja 3.1).
  2. Proszę wybrać przy domenie, czy www ma prowadzić do domeny bez www, czy odwrotnie (w DirectAdmin w ustawieniach domeny; w innym przypadku za pomocą przekierowania w Przekierowania lub w .htaccess).
  3. Proszę sprawdzić łańcuch za pomocą zadania poniżej lub narzędzi deweloperskich przeglądarki (karta Sieć, pole wyboru "Zachowaj log").

Podsumowanie

  • Proszę wybrać jeden adres kanoniczny i skierować do niego pozostałe trzy warianty kodem 301 (lub 308), w jednym kroku.
  • Przekierowanie na https powinien wykonywać tylko jeden element; w przeciwnym razie powstaje pętla.
  • Treści mieszane to strona https, która ładuje elementy przez http; konsola przeglądarki pokazuje, które to są.
  • Stare linki w bazie danych zamienia się poleceniem wp search-replace lub wtyczką, która rozumie dane serializowane, nigdy prostym SQL REPLACE.
  • Zawsze najpierw kopia zapasowa i przebieg próbny (--dry-run); kolumnę guid należy zostawić w spokoju i ograniczyć się do tabel WordPressa.

Quiz

1. Jakiego przekierowania używa się, aby na stałe kierować http na https?



2. Po włączeniu opcji "zawsze https" przeglądarka zgłasza "zbyt wiele przekierowań". Jaka jest najbardziej prawdopodobna przyczyna?



3. Dlaczego UPDATE ... REPLACE(...) w SQL jest niebezpieczne przy zmianie adresów?



4. Który element na stronie https przeglądarka zawsze blokuje, jeśli jest ładowany przez http?



Zadanie

Zadanie A3.2: Jeden adres główny i brak treści mieszanych. Proszę wpisać swoją domenę. Program otwiera cztery warianty (http i https, z www i bez) i śledzi przekierowania. Prawidłowy wynik: wszystkie cztery prowadzą do tego samego adresu z https, z najwyżej jednym przekierowaniem na wariant i wyłącznie kodami stałymi (301 lub 308). Następnie program odczytuje HTML strony głównej i szuka skryptów, arkuszy stylów, obrazów, ramek iframe i czcionek ładowanych przez http://.

Zadanie A3.2: Jeden adres główny i brak treści mieszanych


Wprowadzone dane i wyniki sprawdzania nie są zapisywane. Przeglądarka zapamiętuje udzielone odpowiedzi oraz informację, czy zadanie zostało zaliczone. Po zalogowaniu w Moje kursy zapisywana jest jedynie informacja, że zadanie zostało zaliczone (lub prawie zaliczone); tam można ją również usunąć.

Dalsza lektura

Te artykuły opisują kroki w panelach WebOké; w innych panelach przebiega to podobnie.

Chwileczkę…

Konfiguracja domen

Dla każdej domeny można ustawić serwery nazw, powiązanie z hostingiem oraz to, kto zostanie właścicielem.

Wczytywanie domen…