Moduuli 3 · 3.2
www, uudelleenohjaus ja sekasisältö
Moduuli 3: Osoite, https ja käyttäjät · Lukuaika: 9 minuuttia
Oppimistavoite: Tämän oppitunnin jälkeen osaat valita yhden pääosoitteen, ohjata kaikki muunnelmat sinne yhdellä uudelleenohjauksella sekä löytää ja korjata sekasisällön.
Keskeiset käsitteet: kanoninen osoite, 301 ja 308, uudelleenohjausketju, sekasisältö (mixed content), haku ja korvaus tietokannassa, sarjallistetut tiedot
Neljä osoitetta, yksi sivusto
Sivustosi on saatavilla neljästä osoitteesta:
http://example.com
http://www.example.com
https://example.com
https://www.example.comKävijälle sillä ei ole väliä, mutta hakukoneille ne ovat neljä eri osoitetta, joissa on sama sisältö. Myös evästeet (kuten kirjautumiseväste) ovat nimikohtaisia: kun kirjaudut osoitteessa www, et ole kirjautuneena verkkotunnuksessa ilman www:tä. Siksi valitset yhden kanonisen osoitteen (pääosoitteen) ja ohjaat kolme muuta sinne.
Kumman valitset, on makuasia (oppitunti 2.1). Tärkeintä on, että pääosoite on kaikkialla sama: DNS:ssä, sertifikaatissa, kohdassa Asetukset > Yleiset (oppitunti 3.1) ja uudelleenohjauksissa.
Uudelleenohjaus 301:llä, yhdellä askeleella
Uudelleenohjaus on palvelimen vastaus: "tämä sivu on muualla". Selain siirtyy silloin automaattisesti uuteen osoitteeseen. Koodi kertoo, millainen uudelleenohjaus on kyseessä:
| Koodi | Merkitys | Käyttö |
|---|---|---|
| 301 | Siirretty pysyvästi | Vakiovalinta, kun ohjataan http:stä https:ään ja www:stä verkkotunnukseen ilman www:tä (tai toisin päin) |
| 308 | Pysyvä, ja menetelmä (esimerkiksi lomakkeen lähetys) pysyy samana | Käy myös tähän tarkoitukseen; selaimet ja hakukoneet käsittelevät sitä kuten 301:tä |
| 302 tai 307 | Tilapäinen | Vain asioihin, jotka ovat oikeasti tilapäisiä, kuten huoltosivu |
Pysyvä uudelleenohjaus kertoo hakukoneille, että uusi osoite on se oikea. Tilapäisen kohdalla ne muistavat edelleen vanhan osoitteen.
Kiinnitä huomiota myös ketjuun. Oletetaan, että pääosoitteesi on https://example.com. Silloin haluat tämän:
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 200Jokainen muunnelma päätyy pääosoitteeseen yhdellä askeleella. Usein käy näin:
http://www.example.com 301 https://www.example.com/
https://www.example.com 301 https://example.com/Se toimii, mutta vaatii ylimääräisen askeleen (lisää odotusaikaa, varsinkin mobiilissa) ja ylimääräisen TLS-kättelyn. Pahempi on silmukka: verkkopalvelin ohjaa https:ään, WordPress ohjaa takaisin http:hen, koska asetusten osoitteet ovat yhä http-muodossa, ja selain ilmoittaa "liian monta uudelleenohjausta". Silloin kaksi asetusta ohjaa toisiaan vastaan. Varmista, että vain yksi osapuoli ohjaa https:ään (verkkopalvelin tai hallintapaneeli) ja että WordPressin osoitteet ovat jo pääosoitteen mukaiset.
WordPress tekee myös itse uudelleenohjauksia: jos joku pyytää osoitetta https://www.example.com/contact/, kun sivuston osoite on https://example.com, WordPress ohjaa osoitteeseen https://example.com/contact/. Tämä toimii vain, jos pyyntö päätyy WordPressille, eli jos verkkopalvelin ohjaa myös nimen www tälle sivustolle.
Sekasisältö
Sekasisältö (mixed content) tarkoittaa https-sivua, joka lataa osia http://-osoitteen kautta: kuvan, tyylitiedoston, skriptin, fontin tai upotetun videon. Selain pitää sitä vaarallisena, koska näitä osia voidaan muuttaa matkalla.
- Skriptit, tyylitiedostot ja iframet http:n kautta selaimet estävät. Sivustosi näyttää silloin rikkinäiseltä tai jokin toiminto ei toimi.
- Kuvat, äänen ja videon http:n kautta nykyaikaiset selaimet yrittävät hakea automaattisesti https:n kautta; jos se ei onnistu, ne estetään. Lukon kuvake voi silloin näyttää varoituksen.
Mistä se johtuu:
- Vanhat linkit sisällössäsi: sivustolla, joka oli aiemmin http-osoitteessa, on tuhansissa artikkeleissa
<img src="http://example.com/wp-content/uploads/...">. WordPress tallentaa nämä linkit tietokantaan sellaisenaan. - Teeman tai lisäosan asetukset, joissa on täydellinen osoite, esimerkiksi logo tai taustakuva
http://-osoitteella. - Ulkoiset osat toiselta sivustolta, jotka ovat saatavilla vain http:n kautta. Ne on korvattava tai poistettava.
- Osoitteet kohdassa Asetukset > Yleiset, jotka ovat vielä http-muodossa (oppitunti 3.1).
Näin löydät sen
Avaa sivu, paina F12 ja katso välilehteä Console (Konsoli). Selain ilmoittaa jokaisesta sekasisällöstä osan osoitteen kera. Voit myös hakea sivun lähdekoodista (Ctrl+U) merkkijonoja src="http:// ja href="http://. Tavallisen tekstin linkit muille sivustoille (<a href="http://...">) eivät aiheuta sekasisältöä; kyse on asioista, jotka sivu lataa.
Haku ja korvaus, mutta oikein
Ratkaisu sisällön vanhoihin linkkeihin on korvata tietokannassa kaikki http://example.com osoitteella https://example.com. Houkutus on käyttää SQL-komentoa kuten:
UPDATE wp_options SET option_value = REPLACE(option_value, 'http://example.com', 'https://example.com');Älä tee niin. Monet teemojen, lisäosien ja widgettien asetukset on tallennettu sarjallistettuina. Se näyttää tältä:
s:27:"http://example.com/logo.png";s:27 tarkoittaa: tässä tulee 27 merkin pituinen teksti. Pelkän korvauksen jälkeen teksti on 28 merkkiä (siihen tuli s lisää), mutta luku on yhä 27. PHP ei silloin pysty enää lukemaan arvoa ja asetus katoaa hiljaa: tyhjä valikko, kadonnut logo, poissa olevat widgetit.
Käytä työkalua, joka päivittää nämä pituudet, ja tee aina ensin varmuuskopio (oppitunti 8.1): haulla ja korvauksella ei ole roskakoria.
- WP-CLI: ensin katso, sitten tee. Siirry päätteessä WordPressisi hakemistoon ja aja ensin koeajo (ensimmäinen rivi), vasta sitten varsinainen ajo (toinen rivi).
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=guidValitsimella --dry-run näet, montako korvausta kuhunkin tauluun tehtäisiin, muuttamatta mitään. --skip-columns=guid jättää artikkelien pysyvät tunnisteet (sarake guid) rauhaan; WordPress suosittelee, ettei niitä koskaan muuteta. Ilman lisävalitsinta WP-CLI käsittelee vain WordPressin tauluja. Jos lisäosalla on omia tauluja samalla etuliitteellä, lisää --all-tables-with-prefix. Käytä valitsinta --all-tables vain, jos tiedät miksi: se koskee tietokannan jokaista taulua, myös toisen sivuston tai sovelluksen tauluja.
- Haku ja korvaus -lisäosa, joka tukee sarjallistettuja tietoja (wordpress.org-sivuston lisäosahakemistossa on useita). Käytä myös siinä ensin koetilaa ja poista lisäosa sen jälkeen.
Älä koskaan korvaa pelkkää example.com ilman edeltävää http:// tai https://: silloin muutat myös sähköpostiosoitteita ja muita tekstejä. Koko työtapa, myös niille, joilla ei ole päätettä, on kerrottu tietopankin artikkelissa hausta ja korvauksesta WordPressin tietokannassa (katso Lue lisää).
Käytännössä: tältä se näyttää hallintapaneelissa
Käytämme esimerkkinä DirectAdminia. Muissa hallintapaneeleissa on vastaava kytkin asetukselle "aina https".
- Ota verkkotunnuksen asetuksista käyttöön Force SSL with https redirect (oppitunti 3.1).
- Valitse verkkotunnuksen kohdalla, ohjataanko www verkkotunnukseen ilman www:tä vai toisin päin (DirectAdminissa verkkotunnuksen asetuksissa; muuten uudelleenohjauksella kohdan Site Redirects tai tiedoston
.htaccesskautta). - Tarkista ketju alla olevalla tehtävällä tai selaimesi kehitystyökaluilla (välilehti Verkko, valinta "Säilytä loki").
Yhteenveto
- Valitse yksi kanoninen osoite ja ohjaa kolme muuta muunnelmaa sinne 301:llä (tai 308:lla), yhdellä askeleella.
- Anna vain yhden osapuolen ohjata https:ään; muuten syntyy silmukka.
- Sekasisältö on https-sivu, joka lataa osia http:n kautta; selaimen konsoli näyttää, mitkä.
- Tietokannan vanhat linkit korvaat komennolla
wp search-replacetai lisäosalla, joka ymmärtää sarjallistetut tiedot, ei koskaan pelkällä SQL-REPLACE-komennolla. - Aina ensin varmuuskopio ja ensin koeajo (
--dry-run); jätä sarakeguidrauhaan ja pysy WordPressin tauluissa.
Tietovisa
Tehtävä
Tehtävä A3.2: Yksi pääosoite ilman sekasisältöä. Kirjoita verkkotunnuksesi. Ohjelma avaa neljä muunnelmaa (http ja https, www:n kanssa ja ilman) ja seuraa uudelleenohjauksia. Oikein on, kun kaikki neljä päätyvät samaan https-osoitteeseen, kussakin muunnelmassa on enintään yksi uudelleenohjaus ja käytössä on vain pysyviä koodeja (301 tai 308). Sen jälkeen ohjelma lukee etusivun HTML:n ja etsii skriptejä, tyylitiedostoja, kuvia, iframeja ja fontteja, jotka ladataan http://-osoitteen kautta.
Lue lisää
Nämä artikkelit kuvaavat vaiheet WebOkén hallintapaneeleissa; muissa paneeleissa ne toimivat samaan tapaan.
- DirectAdmin-ohje 6.4: Kävijät aina https-osoitteeseen ohjaaminen
- DirectAdmin-ohje 4.7: Site Redirects: verkkotunnuksen tai sivun uudelleenohjaus
- Haku ja korvaus WordPress-tietokannassa
- Ohjaa kävijät pakotetusti https-osoitteeseen
- Ilmainen DNS-kurssi 3.4: www, uudelleenohjaus ja mitä DNS ei tee
- Sekasisältö (MDN, englanniksi): https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content
- wp search-replace (developer.wordpress.org, englanniksi): https://developer.wordpress.org/cli/commands/search-replace/
