3 modulis · 3.2
www, peradresavimas ir mišrus turinys
3 modulis: Adresas, https ir naudotojai · Skaitymo trukmė: 9 min.
Mokymosi tikslas: Po šios pamokos galėsite pasirinkti vieną pagrindinį adresą, visus variantus nukreipti į jį vienu peradresavimu, taip pat rasti ir pašalinti mišrų turinį (mixed content).
Pagrindinės sąvokos: kanoninis adresas, 301 ir 308, peradresavimų grandinė, mišrus turinys (mixed content), paieška ir keitimas duomenų bazėje, serializuoti duomenys
Keturi adresai, viena svetainė
Jūsų svetainė pasiekiama keturiais adresais:
http://example.com
http://www.example.com
https://example.com
https://www.example.comLankytojui tai nesvarbu, tačiau paieškos sistemoms tai keturi skirtingi adresai su tuo pačiu turiniu. Slapukai (pvz., Jūsų prisijungimo slapukas) taip pat galioja konkrečiam vardui: prisijungę prie www, nesate prisijungę prie domeno be www. Todėl pasirinkite vieną kanoninį adresą (pagrindinį adresą) ir kitus tris nukreipkite į jį.
Kurį pasirinkti, yra skonio reikalas (pamoka 2.1). Svarbu, kad pagrindinis adresas visur būtų tas pats: DNS, sertifikate, skiltyje Nustatymai > Pagrindinės (pamoka 3.1) ir peradresavimuose.
Peradresavimas su 301, vienu žingsniu
Peradresavimas yra serverio atsakymas: „šis puslapis yra kitur“. Tada naršyklė pati pereina į naują adresą. Kodas nurodo, koks tai peradresavimas:
| Kodas | Reikšmė | Naudojimas |
|---|---|---|
| 301 | Perkelta visam laikui | Įprastas pasirinkimas nukreipiant iš http į https ir iš www į domeną be www (arba atvirkščiai) |
| 308 | Visam laikui, o metodas (pvz., formos pateikimas) nesikeičia | Taip pat tinka šiam tikslui; naršyklės ir paieškos sistemos jį vertina kaip 301 |
| 302 arba 307 | Laikinai | Tik tam, kas iš tiesų laikina, pvz., techninės priežiūros puslapiui |
Nuolatinis peradresavimas paieškos sistemoms praneša, kad tikrasis adresas yra naujasis. Esant laikinam, jos ir toliau įsimena senąjį adresą.
Atkreipkite dėmesį ir į grandinę. Tarkime, Jūsų pagrindinis adresas yra https://example.com. Tuomet Jums reikia:
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 200Kiekvienas variantas pasiekia pagrindinį adresą vienu žingsniu. Kas dažnai nutinka:
http://www.example.com 301 https://www.example.com/
https://www.example.com 301 https://example.com/Tai veikia, tačiau prideda papildomą žingsnį (papildomas laukimas, ypač mobiliajame įrenginyje) ir papildomą TLS rankos paspaudimą (handshake). Dar blogiau, kai susidaro ratas: žiniatinklio serveris nukreipia į https, WordPress nukreipia atgal į http, nes nustatymuose adresai vis dar nurodyti su http, o naršyklė praneša „per daug peradresavimų“. Tada du nustatymai veikia vienas prieš kitą. Pasirūpinkite, kad į https nukreiptų tik viena šalis (žiniatinklio serveris arba valdymo skydelis), o WordPress adresai jau būtų nustatyti į pagrindinį adresą.
WordPress ir pats atlieka peradresavimą: jei kas nors užklausia https://www.example.com/contact/, o svetainės adresas yra https://example.com, WordPress nukreipia į https://example.com/contact/. Tai veikia tik tada, kai užklausa pasiekia WordPress, t. y. kai žiniatinklio serveris vardą www taip pat nukreipia į šią svetainę.
Mišrus turinys
Mišrus turinys (mixed content) yra https puslapis, kuris dalį elementų įkelia per http://: paveikslėlį, stilių failą, scenarijų, šriftą ar įterptą vaizdo įrašą. Naršyklė tai laiko nesaugiu, nes tie elementai pakeliui gali būti pakeisti.
- Scenarijus, stilių failus ir iframe, įkeliamus per http, naršyklės blokuoja. Tada Jūsų svetainė atrodo sugadinta arba neveikia kuri nors funkcija.
- Paveikslėlius, garso ir vaizdo įrašus, įkeliamus per http, šiuolaikinės naršyklės automatiškai bando gauti per https; jei nepavyksta, jie blokuojami. Tuomet prie spynelės gali būti rodomas įspėjimas.
Iš kur jis atsiranda:
- Senos nuorodos Jūsų turinyje: svetainė, kuri anksčiau veikė per http, tūkstančiuose įrašų turi
<img src="http://example.com/wp-content/uploads/...">. WordPress tokias nuorodas duomenų bazėje saugo pažodžiui. - Temos ar įskiepio nustatymai su pilnu adresu, pvz., logotipas ar fonas su
http://. - Išoriniai elementai iš kitos svetainės, pasiekiami tik per http. Juos reikia pakeisti arba pašalinti.
- Adresai skiltyje Nustatymai > Pagrindinės, kurie vis dar nurodyti su http (pamoka 3.1).
Kaip jį rasti
Atidarykite puslapį, paspauskite F12 ir pažiūrėkite į skirtuką Console (Konsolė). Naršyklė praneša apie kiekvieną mišraus turinio atvejį ir nurodo elemento adresą. Arba puslapio išeities kode (Ctrl+U) ieškokite src="http:// ir href="http://. Nuorodos į kitas svetaines įprastame tekste (<a href="http://...">) mišraus turinio nesukuria; svarbūs tik tie dalykai, kuriuos puslapis įkelia.
Paieška ir keitimas, bet teisingai
Senų nuorodų turinyje sprendimas yra visus http://example.com duomenų bazėje pakeisti į https://example.com. Kyla pagunda naudoti tokią SQL komandą:
UPDATE wp_options SET option_value = REPLACE(option_value, 'http://example.com', 'https://example.com');Nedarykite to. Daug temų, įskiepių ir valdiklių nustatymų saugoma serializuotai. Tai atrodo taip:
s:27:"http://example.com/logo.png";s:27 reiškia: toliau eina 27 simbolių tekstas. Po paprasto pakeitimo tekstas tampa 28 simbolių (atsirado s), tačiau vis dar parašyta 27. Tada PHP nebegali perskaityti reikšmės ir nustatymas tyliai dingsta: tuščias meniu, išnykęs logotipas, dingę valdikliai.
Naudokite įrankį, kuris atnaujina šiuos ilgius, ir visada pirmiausia pasidarykite atsarginę kopiją (pamoka 8.1): paieška ir keitimas neturi šiukšliadėžės.
- WP-CLI: pirmiausia pažiūrėkite, tada darykite. Terminale pereikite į savo WordPress aplanką ir pirmiausia paleiskite bandomąjį vykdymą (pirma eilutė), tik po to tikrąjį (antra eilutė).
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=guidSu --dry-run matote, kiek pakeitimų būtų kiekvienoje lentelėje, nieko nekeičiant. --skip-columns=guid nepaliečia nuolatinių įrašų identifikatorių (stulpelis guid); WordPress rekomenduoja jų niekada nekeisti. Be papildomos parinkties WP-CLI veikia tik WordPress lentelėse. Jei įskiepis turi savo lenteles su tuo pačiu priešdėliu, pridėkite --all-tables-with-prefix. --all-tables naudokite tik tada, kai žinote kodėl: ši parinktis paliečia kiekvieną duomenų bazės lentelę, taip pat ir kitos svetainės ar programos.
- Paieškos ir keitimo įskiepis, palaikantis serializuotus duomenis (wordpress.org įskiepių kataloge jų yra keletas). Ir čia pirmiausia naudokite bandomąjį režimą, o po to įskiepį vėl pašalinkite.
Niekada nekeiskite kažko panašaus į example.com be http:// arba https:// priekyje: taip paliesite ir el. pašto adresus bei kitus tekstus. Visa darbo eiga, taip pat ir tiems, kurie neturi terminalo, aprašyta žinių bazės straipsnyje apie paiešką ir keitimą WordPress duomenų bazėje (žr. Papildoma literatūra).
Praktikoje: kaip tai atrodo valdymo skydelyje
Pavyzdžiui naudojame DirectAdmin. Kiti valdymo skydeliai turi panašų jungiklį „visada https“.
- Domeno nustatymuose įjunkite Įjungti automatinį peradresavimą į HTTPS (pamoka 3.1).
- Prie domeno pasirinkite, ar www turi būti nukreipiamas į domeną be www, ar atvirkščiai (DirectAdmin tai daroma domeno nustatymuose; kitais atvejais peradresavimu per Puslapių peradresavimai arba
.htaccess). - Patikrinkite grandinę toliau pateikta užduotimi arba naršyklės kūrėjo įrankiais (skirtukas Tinklas, varnelė „Išsaugoti žurnalą“).
Santrauka
- Pasirinkite vieną kanoninį adresą ir kitus tris variantus nukreipkite į jį su 301 (arba 308), vienu žingsniu.
- Į https turi nukreipti tik viena šalis; kitaip susidaro ratas.
- Mišrus turinys yra https puslapis, kuris dalį elementų įkelia per http; naršyklės konsolė parodo, kurie tai elementai.
- Senas nuorodas duomenų bazėje keiskite su
wp search-replacearba įskiepiu, kuris supranta serializuotus duomenis, bet niekada ne paprastu SQL REPLACE. - Visada pirmiausia atsarginė kopija ir bandomasis vykdymas (
--dry-run); nelieskite stulpelioguidir apsiribokite WordPress lentelėmis.
Testas (quiz)
Užduotis
Užduotis A3.2: Vienas pagrindinis adresas ir jokio mišraus turinio. Įveskite savo domeną. Programa atidaro keturis variantus (http ir https, su www ir be jo) ir seka peradresavimus. Teisinga, kai visi keturi pasiekia tą patį adresą su https, kiekvienam variantui reikia ne daugiau kaip vieno peradresavimo ir naudojami tik nuolatiniai kodai (301 arba 308). Po to programa perskaito pradinio puslapio HTML ir ieško scenarijų, stilių failų, paveikslėlių, iframe ir šriftų, įkeliamų per http://.
Papildoma literatūra
Šiuose straipsniuose aprašyti veiksmai WebOké valdymo skydeliuose; kituose skydeliuose jie atliekami panašiai.
- DirectAdmin vadovas 6.4: Lankytojus visada nukreipti į https
- DirectAdmin vadovas 4.7: Puslapių peradresavimai: domeno ar puslapio peradresavimas
- Paieška ir keitimas WordPress duomenų bazėje
- Priverstinai nukreipti lankytojus į https
- Nemokamas DNS kursas 3.4: www, peradresavimas ir ką DNS nedaro
- Mišrus turinys (MDN, anglų kalba): https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content
- wp search-replace (developer.wordpress.org, anglų kalba): https://developer.wordpress.org/cli/commands/search-replace/
