Moodul 3 · 3.2
www, ümbersuunamine ja segasisu
Moodul 3: Aadress, https ja kasutajad · Lugemisaeg: 9 minutit
Õpieesmärk: Pärast seda õppetundi oskad valida ühe peamise aadressi, suunata kõik variandid sinna ühe ümbersuunamisega ning leida ja lahendada segasisu.
Põhimõisted: kanooniline aadress, 301 ja 308, ümbersuunamiste ahel, segasisu (mixed content), otsimine ja asendamine andmebaasis, serialiseeritud andmed
Neli aadressi, üks sait
Sinu sait on kättesaadav nelja aadressi kaudu:
http://example.com
http://www.example.com
https://example.com
https://www.example.comKülastaja jaoks pole see oluline, kuid otsingumootorite jaoks on tegu nelja erineva aadressiga, millel on sama sisu. Ka küpsised (näiteks sinu sisselogimisküpsis) kehtivad nime kaupa: kes logib sisse domeenil www, ei ole sisse logitud domeenil ilma www-ta. Seetõttu vali üks kanooniline aadress (peamine aadress) ja suuna ülejäänud kolm sinna.
Millise sa valid, on maitse asi (õppetund 2.1). Oluline on, et peamine aadress oleks kõikjal sama: DNS-is, sertifikaadil, menüüs Sätted > Üldine (õppetund 3.1) ja ümbersuunamistes.
Ümbersuunamine 301-ga, ühe sammuga
Ümbersuunamine on serveri vastus: „see leht asub mujal“. Brauser läheb siis automaatselt uuele aadressile. Kood näitab, mis tüüpi ümbersuunamisega on tegu:
| Kood | Tähendus | Kasutus |
|---|---|---|
| 301 | Jäädavalt kolinud | Kindel valik http-lt https-le ja www-lt domeenile ilma www-ta (või vastupidi) |
| 308 | Jäädav, ja meetod (näiteks vormi saatmine) jääb samaks | Sobib samuti sellel eesmärgil; brauserid ja otsingumootorid käsitlevad seda nagu 301 |
| 302 või 307 | Ajutine | Ainult millegi jaoks, mis on tõesti ajutine, näiteks hoolduslehe jaoks |
Jäädav ümbersuunamine ütleb otsingumootoritele, et uus aadress on tõeline. Ajutise puhul jätavad nad vana aadressi meelde.
Jälgi ka ahelat. Oletame, et sinu peamine aadress on https://example.com. Siis soovid:
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 200Iga variant jõuab ühe sammuga peamisele aadressile. Mis sageli juhtub:
http://www.example.com 301 https://www.example.com/
https://www.example.com 301 https://example.com/See toimib, kuid võtab aega ühe sammu võrra rohkem (lisaooteaeg, eriti mobiilis) ja ühe lisa TLS-kätluse. Hullem on ring: veebiserver suunab https-le, WordPress suunab tagasi http-le, kuna aadressid seadetes on veel http peal, ja brauser teatab „liiga palju ümbersuunamisi“. Siis suunavad kaks sätet üksteisele vastu. Veendu, et ainult üks osapool suunab https-le (veebiserver või haldusliides) ja et WordPressis on aadressid juba peamisel aadressil.
WordPress suunab ka ise ümber: kui keegi küsib https://www.example.com/contact/, kuid saidi aadress on https://example.com, siis suunab WordPress ümber aadressile https://example.com/contact/. See toimib ainult siis, kui päring jõuab WordPressini, seega kui veebiserver suunab ka www selle saidi juurde.
Segasisu
Segasisu (mixed content) on https-leht, mis laadib osi http:// kaudu: pilt, stiilileht, skript, font või sisestatud video. Brauser peab seda ebaturvaliseks, kuna neid osi saab teel muuta.
- Skriptid, stiililehed ja iframe'id http kaudu blokeeritakse brauserite poolt. Sinu sait võib siis näida katkisena või mingi funktsioon ei tööta.
- Pildid, heli ja video http kaudu: kaasaegsed brauserid proovivad neid automaatselt https kaudu laadida; kui see ei õnnestu, blokeeritakse need. Lukk-ikoon võib siis näidata hoiatust.
Kust see pärineb:
- Vanad lingid sinu sisus: sait, mis oli varem http peal, sisaldab tuhandetes postitustes
<img src="http://example.com/wp-content/uploads/...">. WordPress salvestab need lingid andmebaasi sõna-sõnalt. - Teema või plugina seaded täisaadressiga, näiteks logo või taust aadressiga
http://. - Välised osad teiselt saidilt, mis on kättesaadavad ainult http kaudu. Need tuleb asendada või eemaldada.
- Aadressid menüüs Sätted > Üldine, mis on veel http peal (õppetund 3.1).
Nii leiad selle üles
Ava leht, vajuta F12 ja vaata vahekaarti Console. Brauser teatab iga segasisu juhtumi kohta selle osa aadressi. Või otsi lehe lähtekoodist (Ctrl+U) otsingsõnu src="http:// ja href="http://. Tavalised tekstis olevad lingid teistele saitidele (<a href="http://...">) ei tekita segasisu; küsimus on asjades, mida leht laadib.
Otsimine ja asendamine, aga õigesti
Lahendus vanade linkide jaoks sinu sisus on asendada kõik http://example.com andmebaasis aadressiga https://example.com. Kiusatus on kasutada SQL-käsku nagu:
UPDATE wp_options SET option_value = REPLACE(option_value, 'http://example.com', 'https://example.com');Ära tee seda. Paljud teemade, pluginate ja vidinate seaded on salvestatud serialiseeritult. See näeb välja nii:
s:27:"http://example.com/logo.png";s:27 tähendab: siin järgneb 27-tähemärgiline tekst. Pärast lihtsat asendust on tekst 28 tähemärki pikk (lisandus üks s), kuid seal seisab endiselt 27. PHP ei suuda siis väärtust enam lugeda ja säte kaob vaikselt: tühi menüü, kadunud logo, vidinad on kadunud.
Kasuta tööriista, mis uuendab neid pikkusi:
- WP-CLI: kõigepealt vaata, siis tee.
wp search-replace 'http://example.com' 'https://example.com' --all-tables --dry-run
wp search-replace 'http://example.com' 'https://example.com' --all-tablesKäsuga --dry-run näed, kui palju asendusi iga tabeli kohta tehtaks, ilma et midagi muudetaks.
- Otsimise-ja-asendamise plugin, mis toetab serialiseeritud andmeid (neid on mitmeid wordpress.org pluginakataloogis). Eemalda plugin pärast kasutamist.
Tee alati enne varukoopia (õppetund 8.1). Ära kunagi asenda ka midagi nagu example.com ilma eesliiteta http://: siis mõjutad ka e-posti aadresse ja muid tekste.
Praktikas: nii näeb see välja haldusliideses
Näitena kasutame DirectAdmin. Teistes haldusliidestes on sarnane lüliti „alati https“ jaoks.
- Lülita domeeni seadetes sisse Force SSL with https redirect (õppetund 3.1).
- Vali domeeni juures, kas www peab suunama domeenile ilma www-ta või vastupidi (DirectAdminis domeeni seadetes; muidu ümbersuunamisega menüüs Site Redirects või failis
.htaccess). - Kontrolli ahelat allpool oleva käsuga või brauseri arendustööriistadega (vahekaart Võrk, märgi linnuke „Säilita logi“).
Kokkuvõte
- Vali üks kanooniline aadress ja suuna ülejäänud kolm varianti sinna 301-ga (või 308-ga), ühe sammuga.
- Lase ainult ühel osapoolel https-le suunata; muidu tekib ring.
- Segasisu on https-leht, mis laadib osi http kaudu; brauseri konsool näitab, millised.
- Vanad lingid andmebaasis asenda käsuga
wp search-replacevõi pluginaga, mis mõistab serialiseeritud andmeid, mitte kunagi lihtsa SQL-REPLACE käsuga. - Alati esmalt varukoopia ja esmalt prooviring.
Test
Ülesanne
Ülesanne A3.2: Üks peamine aadress ja segasisu puudub. Sisesta oma domeen. Programm avab neli varianti (http ja https, koos ja ilma www-ta) ning jälgib ümbersuunamisi. Hea tulemus on: kõik neli jõuavad samale aadressile https-ga, maksimaalselt ühe ümbersuunamisega variandi kohta ja ainult jäädavate koodidega (301 või 308). Seejärel loeb programm avalehe HTML-i ja otsib skripte, stiililehti, pilte, iframe'e ja fonte, mis laaditakse http:// kaudu.
Lisalugemist
Need artiklid kirjeldavad samme WebOké haldusliidestes; teistes haldusliidestes toimivad need sarnaselt.
- DirectAdmin juhend 6.4: Külastajate suunamine alati https peale
- DirectAdmin juhend 4.7: Site Redirects: domeeni või lehe edasisuunamine
- Suuna külastajad kohustuslikus korras https-ile
- Tasuta DNS-kursus 3.4: www, suunamine ja mida DNS ei tee
- Segasisu (MDN, inglise keeles): https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content
- wp search-replace (developer.wordpress.org, inglise keeles): https://developer.wordpress.org/cli/commands/search-replace/
