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 parandada segasisu.
Põhimõisted: kanooniline aadress, 301 ja 308, ümbersuunamisahel, segasisu (mixed content), otsimine ja asendamine andmebaasis, serialiseeritud andmed
Neli aadressi, üks veebisait
Sinu veebisait on kättesaadav nelja aadressi kaudu:
http://example.com
http://www.example.com
https://example.com
https://www.example.comKülastajale pole sellel vahet, kuid otsingumootorite jaoks on need neli erinevat aadressi sama sisuga. Ka küpsised (näiteks sinu sisselogimisküpsis) kehtivad nime kaupa: kes logib sisse aadressil www, ei ole sisse logitud domeenil ilma www-ta. Seepärast vali üks kanooniline aadress (peamine aadress) ja suuna ülejäänud kolm sinna ümber.
Kumma valid, on maitseasi (õppetund 2.1). Oluline on, et peamine aadress oleks kõikjal sama: DNS-is, sertifikaadis, menüüs Sätted > Üldine (õppetund 3.1) ja ümbersuunamistes.
Ümbersuunamine 301-ga, ühe sammuga
Ümbersuunamine on serveri vastus: "see leht asub mujal". Brauser liigub siis ise uuele aadressile. Kood ütleb, millise ümbersuunamisega on tegu:
| Kood | Tähendus | Kasutus |
|---|---|---|
| 301 | Jäädavalt ümber kolinud | Tavaline 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 ka selleks otstarbeks; brauserid ja otsingumootorid käsitlevad seda nagu 301 |
| 302 või 307 | Ajutine | Ainult millegi jaoks, mis on päriselt ajutine, näiteks hoolduse leht |
Jäädav ümbersuunamine ütleb otsingumootoritele, et uus aadress on õige. Ajutise puhul jätavad nad meelde vana aadressi.
Pööra tähelepanu ka ahelale. Oletame, et sinu peamine aadress on https://example.com. Siis soovid järgmist:
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 peamisele aadressile ühe sammuga. Sageli juhtub aga nii:
http://www.example.com 301 https://www.example.com/
https://www.example.com 301 https://example.com/See töötab küll, kuid lisab ühe sammu (lisaootamine, eriti mobiilis) ja ühe TLS-kätlemise. Veel hullem on ring: veebiserver suunab https-le, WordPress suunab tagasi http-le, sest seadetes on aadressid veel http-ga, ja brauser teatab "liiga palju ümbersuunamisi". Siis töötavad kaks seadet teineteisele vastu. Hoolitse, et https-le suunaks ainult üks osapool (veebiserver või paneel) ja et WordPressi aadressid oleksid juba peamisel aadressil.
Ka WordPress ise suunab ümber: kui keegi küsib https://www.example.com/contact/, aga saidi aadress on https://example.com, suunab WordPress aadressile https://example.com/contact/. See töötab ainult siis, kui päring jõuab WordPressini ehk kui veebiserver suunab ka nime www sellele veebisaidile.
Segasisu
Segasisu (mixed content) on https-leht, mis laadib osi http:// kaudu: pildi, stiililehe, skripti, fondi või manustatud video. Brauser peab seda ebaturvaliseks, sest neid osi saab teel muuta.
- Skriptid, stiililehed ja iframe'id blokeerivad brauserid http kaudu. Sinu veebisait näeb siis katkine välja või mõni funktsioon ei tööta.
- Pilte, heli ja videot http kaudu proovivad tänapäevased brauserid automaatselt https kaudu laadida; kui see ei õnnestu, blokeeritakse need. Lukuikoon võib siis näidata hoiatust.
Kust see tuleb:
- Vanad lingid sinu sisus: veebisaidil, mis oli varem http peal, on tuhandetes postitustes
<img src="http://example.com/wp-content/uploads/...">. WordPress salvestab need lingid andmebaasi täpselt sellisel kujul. - Teema või plugina seaded täieliku aadressiga, näiteks logo või taust aadressiga
http://. - Välised osad mõnelt 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-ga (õppetund 3.1).
Nii leiad selle üles
Ava leht, vajuta F12 ja vaata vahekaarti Console. Brauser teatab iga segasisu juhtumi koos selle osa aadressiga. Või otsi lehe lähtekoodist (Ctrl+U) src="http:// ja href="http://. Tavalises tekstis olevad lingid teistele saitidele (<a href="http://...">) segasisu ei tekita; oluline on see, mida leht laadib.
Otsimine ja asendamine, aga õigesti
Lahendus vanadele linkidele sinu sisus on asendada andmebaasis kõik http://example.com aadressiga https://example.com. Ahvatlev on kasutada sellist SQL-käsku:
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: siit tuleb 27 märgi pikkune tekst. Pärast lihtsat asendamist on tekst 28 märki pikk (lisandus s), kuid kirjas on endiselt 27. PHP ei suuda väärtust siis enam lugeda ja seade kaob vaikselt: tühi menüü, kadunud logo, vidinad, mida enam pole.
Kasuta tööriista, mis need pikkused ära uuendab, ja tee alati enne varukoopia (õppetund 8.1): otsimisel ja asendamisel pole prügikasti.
- WP-CLI: enne vaata, siis tee. Mine terminalis oma WordPressi kausta ja käivita kõigepealt proovikord (esimene rida), alles seejärel päris käsk (teine rida).
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=guidValikuga --dry-run näed, mitu asendust iga tabelis tehtaks, ilma et midagi muutuks. --skip-columns=guid jätab postituste püsivad tunnused (veerg guid) puutumata; WordPress soovitab neid mitte kunagi muuta. Ilma lisavalikuta töötab WP-CLI ainult WordPressi tabelitega. Kui mõnel pluginal on sama eesliitega omad tabelid, lisa --all-tables-with-prefix. Kasuta --all-tables ainult siis, kui tead, miks: see puudutab andmebaasi iga tabelit, ka mõne teise saidi või rakenduse omi.
- Otsimise ja asendamise plugin, mis toetab serialiseeritud andmeid (wordpress.org pluginakataloogis on neid mitu). Kasuta ka seal kõigepealt proovirežiimi ja eemalda plugin pärast uuesti.
Ära kunagi asenda midagi nagu example.com ilma ees oleva http:// või https://-ta: siis muudad ka e-posti aadresse ja muid tekste. Kogu töövoog, ka neile, kellel terminali pole, on kirjas teadmusbaasi artiklis otsimise ja asendamise kohta WordPressi andmebaasis (vt Lisalugemist).
Praktikas: nii näeb see paneelis välja
Näitena kasutame DirectAdminit. Teistes paneelides on "alati https" jaoks sarnane lüliti.
- 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üü Site Redirects või faili
.htaccesskaudu). - Kontrolli ahelat allpool oleva ülesandega või oma brauseri arendustööriistadega (vahekaart Võrgustik, 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 https-le suunata ainult ühel osapoolel; muidu tekib ring.
- Segasisu on https-leht, mis laadib osi http kaudu; brauseri konsool näitab, milliseid.
- Vanad lingid andmebaasis asenda käsuga
wp search-replacevõi pluginaga, mis mõistab serialiseeritud andmeid, mitte kunagi lihtsa SQL-REPLACE'iga. - Alati kõigepealt varukoopia ja proovikord (
--dry-run); jäta veergguidpuutumata ja piirdu WordPressi tabelitega.
Test (quiz)
Ülesanne
Ülesanne A3.2: Üks peamine aadress ja segasisu puudub. Sisesta oma domeen. Programm avab neli varianti (http ja https, www-ga ja ilma) ning järgib ümbersuunamisi. Õige on: kõik neli jõuavad samale https-aadressile, igal variandil on kõige rohkem üks ümbersuunamine ja ainult jäädavad koodid (301 või 308). Seejärel loeb programm avalehe HTML-i ja otsib skripte, stiililehti, pilte, iframe'e ja fonte, mida laaditakse http:// kaudu.
Lisalugemist
Need artiklid kirjeldavad samme WebOké paneelides; teistes paneelides toimivad need sarnaselt.
- DirectAdmin juhend 6.4: Külastajate suunamine alati https peale
- DirectAdmin juhend 4.7: Site Redirects: domeeni või lehe edasisuunamine
- Otsi ja asenda WordPressi andmebaasis
- Suuna külastajad kohustuslikult 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/
