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ą, nukreipti visus variantus į jį vienu peradresavimu bei aptikti ir ištaisyti mišrų turinį.
Pagrindinės sąvokos: kanoninis adresas, 301 ir 308, peradresavimų grandinė, mišrus turinys (mixed content), paieška ir pakeitimas duomenų bazėje, serializuoti duomenys
Keturi adresai, viena svetainė
Jūsų svetainę galima pasiekti 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. Taip pat slapukai (pavyzdžiui, Jūsų prisijungimo slapukas) galioja pagal konkretų pavadinimą: kas prisijungia per www, nėra prisijungęs per domeną be www. Todėl pasirinkite vieną kanoninį adresą (pagrindinį adresą) ir nukreipkite ten kitus tris.
Kurį pasirinksite, yra skonio reikalas (pamoka 2.1). Svarbu, kad pagrindinis adresas būtų vienodas visur: DNS įrašuose, sertifikate, skiltyje Nustatymai > Pagrindinės (pamoka 3.1) ir peradresavimuose.
Peradresavimas su 301, vienu žingsniu
Peradresavimas yra serverio atsakymas: „šis puslapis yra kitur“. Naršyklė tada automatiškai pereina į naują adresą. Kodas nurodo, koks tai peradresavimas:
| Kodas | Reikšmė | Naudojimas |
|---|---|---|
| 301 | Nuolat perkeltas | Standartinis pasirinkimas perkeliant iš http į https ir iš www į domeną be www (arba atvirkščiai) |
| 308 | Nuolatinis, ir metodas (pavyzdžiui, formos pateikimas) išlieka toks pat | Taip pat tinka šiam tikslui; naršyklės ir paieškos sistemos jį traktuoja kaip 301 |
| 302 arba 307 | Laikinas | Tik tikrai laikiniems atvejams, pavyzdžiui, techninės priežiūros puslapiui |
Nuolatinis peradresavimas praneša paieškos sistemoms, kad naujasis adresas yra tikrasis. Esant laikinam peradresavimui, jos ir toliau prisimena seną adresą.
Taip pat atkreipkite dėmesį į grandinę. Tarkime, Jūsų pagrindinis adresas yra https://example.com. Tuomet norite, kad būtų:
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. Dažnai pasitaiko štai kas:
http://www.example.com 301 https://www.example.com/
https://www.example.com 301 https://example.com/Tai veikia, tačiau kainuoja papildomą žingsnį (papildomas laukimo laikas, ypač mobiliuosiuose įrenginiuose) ir papildomą TLS rankos paspaudimą (handshake). Blogiau, kai susidaro ratas: žiniatinklio serveris nukreipia į https, WordPress nukreipia atgal į http, nes nustatymuose adresai vis dar nurodyti http formatu, ir naršyklė praneša apie „per daug peradresavimų“. Tokiu atveju du nustatymai nukreipia vienas kitą priešingomis kryptimis. Pasirūpinkite, kad į https nukreiptų tik viena šalis (žiniatinklio serveris arba valdymo skydelis), ir kad WordPress adresai jau būtų nustatyti pagrindiniam adresui.
WordPress taip pat pats atlieka peradresavimą: jei kas nors paprašo https://www.example.com/contact/, o svetainės adresas yra https://example.com, WordPress nukreipia į https://example.com/contact/. Tai veikia tik tuo atveju, jei užklausa pasiekia WordPress, taigi jei žiniatinklio serveris pavadinimą www taip pat nukreipia į šią svetainę.
Mišrus turinys
Mišrus turinys (mixed content) yra https puslapis, kuris dalis elementų įkelia per http://: paveikslėlį, stilių lentelę (stylesheet), scenarijų (script), šriftą arba įterptą vaizdo įrašą. Naršyklė tai laiko nesaugiu, nes tokie elementai gali būti pakeisti pakeliui.
- Scenarijus, stilių lenteles ir iframe elementus per http naršyklės blokuoja. Tuomet Jūsų svetainė gali atrodyti sugedusi arba kokia nors funkcija neveiks.
- Paveikslėlius, garso ir vaizdo įrašus per http šiuolaikinės naršyklės bando automatiškai gauti per https; jei tai nepavyksta, jie blokuojami. Tuomet spynelės ženkliukas gali rodyti įspėjimą.
Iš kur tai 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 šias nuorodas pažodžiui išsaugo duomenų bazėje. - Temos ar įskiepio nustatymai su pilnu adresu, pavyzdžiui, 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 http formatu (pamoka 3.1).
Kaip tai rasti
Atidarykite puslapį, paspauskite F12 ir pažiūrėkite skirtuke Console. Naršyklė praneša apie kiekvieną mišraus turinio atvejį, nurodydama elemento adresą. Arba puslapio pirminiame kode (Ctrl+U) ieškokite src="http:// ir href="http://. Paprastos nuorodos tekste į kitas svetaines (<a href="http://...">) mišraus turinio nesukelia; čia svarbu tai, ką puslapis įkelia.
Paieška ir pakeitimas, bet teisingai
Senų nuorodų Jūsų turinyje sprendimas yra visus http://example.com atvejus duomenų bazėje pakeisti į https://example.com. Pagunda yra naudoti SQL komandą, pavyzdžiui:
UPDATE wp_options SET option_value = REPLACE(option_value, 'http://example.com', 'https://example.com');To nedarykite. Daugelis temų, įskiepių ir valdiklių (widget) nustatymų yra saugomi serializuoti. Tai atrodo štai taip:
s:27:"http://example.com/logo.png";s:27 reiškia: toliau eina 27 simbolių tekstas. Po paprasto pakeitimo tekstas yra 28 simbolių (pridėjus s), tačiau vis dar nurodyta 27. Tuomet PHP nebegali perskaityti reikšmės ir nustatymas tyliai dingsta: tuščias meniu, dingęs logotipas, pranykę valdikliai.
Naudokite įrankį, kuris atnaujina šiuos ilgius:
- WP-CLI: pirmiausia peržiūrėkite, tada atlikite.
wp search-replace 'http://example.com' 'https://example.com' --all-tables --dry-run
wp search-replace 'http://example.com' 'https://example.com' --all-tablesNaudodami --dry-run pamatysite, kiek pakeitimų būtų atlikta kiekvienoje lentelėje, nieko nekeičiant.
- Paieškos ir pakeitimo įskiepis, palaikantis serializuotus duomenis (jų yra keletas wordpress.org įskiepių kataloge). Po to įskiepį vėl pašalinkite.
Visada pirmiausia pasidarykite atsarginę kopiją (pamoka 8.1). Taip pat niekada nekeiskite kažko panašaus į example.com be http:// priešais: tokiu atveju paveiksite ir el. pašto adresus, ir kitus tekstus.
Praktikoje: kaip tai atrodo valdymo skydelyje
Kaip pavyzdį naudojame DirectAdmin. Kituose skydeliuose yra panašus jungiklis funkcijai „visada https“.
- Domeno nustatymuose įjunkite Įjungti automatinį peradresavimą į HTTPS (pamoka 3.1).
- Domeno nustatymuose pasirinkite, ar www turi nukreipti į domeną be www, ar atvirkščiai (DirectAdmin tai atliekama domeno nustatymuose; kitu atveju per peradresavimą naudojant Puslapių peradresavimai arba
.htaccess). - Patikrinkite grandinę naudodami žemiau pateiktą komandą arba savo naršyklės kūrėjo įrankius (skirtukas Tinklas, pažymėkite „Išsaugoti žurnalą“).
Santrauka
- Pasirinkite vieną kanoninį adresą ir nukreipkite kitus tris variantus ten su 301 (arba 308), vienu žingsniu.
- Leiskite į https nukreipti tik vienai šaliai, kitaip susidarys 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 naudodami
wp search-replacearba įskiepį, kuris supranta serializuotus duomenis, niekada paprastu SQL REPLACE. - Visada pirmiausia atsarginė kopija, o paskui bandomasis ratas.
Testas
Užduotis
Užduotis A3.2: Vienas pagrindinis adresas ir jokio mišraus turinio. Įveskite savo domeną. Programa atidarys keturis variantus (http ir https, su www ir be jo) ir seks peradresavimus. Gerai yra tai, kad visi keturi variantai veda į tą patį adresą su https, ne daugiau kaip vienu peradresavimu kiekvienam variantui ir tik su nuolatiniais kodais (301 arba 308). Po to programa perskaitys pradinio puslapio HTML kodą ir ieškos scenarijų, stilių lentelių, paveikslėlių, iframe elementų ir šriftų, kurie įkeliami per http://.
Papildoma literatūra
Šiuose straipsniuose aprašomi žingsniai WebOké skydeliuose; kituose skydeliuose jie veikia panašiai.
- DirectAdmin vadovas 6.4: Lankytojus visada nukreipti į https
- DirectAdmin vadovas 4.7: Puslapių peradresavimai: domeno ar puslapio nukreipimas
- Privalomas lankytojų nukreipimas į 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/
