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, serialisoitu tieto
Neljä osoitetta, yksi sivusto
Sivustollesi pääsee neljän osoitteen kautta:
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, joilla on sama sisältö. Myös evästeet (kuten kirjautumisevästeesi) toimivat nimikohtaisesti: jos kirjaudut sisään osoitteessa www, et ole kirjautuneena osoitteessa ilman www:tä. Siksi valitset yhden kanonisen osoitteen (pääosoitteen) ja ohjaat muut kolme sinne.
Minkä valitset, on makuasia (oppitunti 2.1). Tärkeintä on, että pääosoite on kaikkialla sama: DNS:ssä, sertifikaatissa, kohdassa Asetukset > Yleinen (oppitunti 3.1) ja uudelleenohjauksissa.
Uudelleenohjaus 301:llä, yhdellä askeleella
Uudelleenohjaus on palvelimen vastaus: "tämä sivu on jossain muualla". Selain siirtyy silloin itse uuteen osoitteeseen. Koodi kertoo, millainen uudelleenohjaus on kyseessä:
| Koodi | Merkitys | Käyttö |
|---|---|---|
| 301 | Pysyvästi siirretty | Vakiovalinta http:stä https:ään ja www:stä osoitteeseen ilman www:tä (tai päinvastoin) |
| 308 | Pysyvä, ja menetelmä (esimerkiksi lomakkeen lähetys) pysyy samana | Käy myös tähän tarkoitukseen; selaimet ja hakukoneet käsittelevät sen kuten 301:n |
| 302 tai 307 | Tilapäinen | Vain jollekin aidosti tilapäiselle, kuten huoltosivulle |
Pysyvä uudelleenohjaus kertoo hakukoneille, että uusi osoite on se oikea. Tilapäisessä ne muistavat vanhan osoitteen edelleen.
Huomioi myös ketju. Oletetaan, että pääosoitteesi on https://example.com. Silloin haluat:
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/Tämäkin toimii, mutta vie ylimääräisen askeleen (ylimääräistä odotusaikaa, varsinkin mobiilissa) ja ylimääräisen TLS-kädenpuristuksen. Pahempaa on silmukka: webpalvelin ohjaa https:ään, WordPress ohjaa takaisin http:hen koska osoitteet asetuksissa ovat yhä http:ssä, ja selain ilmoittaa "liian monta uudelleenohjausta". Silloin kaksi asetusta ohjaa vastakkaisiin suuntiin. Varmista, että vain yksi taho ohjaa https:ään (webpalvelin tai hallintapaneeli) ja että WordPressin osoitteet ovat jo pääosoitteessa.
WordPress ohjaa myös itse: 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ö saapuu WordPressiin asti, eli jos webpalvelin ohjaa myös www-nimen tälle samalle sivustolle.
Sekasisältö
Sekasisältö (mixed content) tarkoittaa https-sivua, joka lataa osia http://:n kautta: kuvan, tyylitiedoston, skriptin, fontin tai upotetun videon. Selain pitää tätä turvattomana, koska nuo osat voivat muuttua matkalla.
- Skriptit, tyylitiedostot ja iframet http:n kautta selaimet estävät. Sivustosi näyttää silloin rikkinäiseltä tai jokin toiminto ei toimi.
- Kuvat, äänet ja videot http:n kautta nykyselaimet yrittävät automaattisesti hakea https:n kautta; jos se ei onnistu, ne estetään. Lukko voi silloin näyttää varoituksen.
Mistä se johtuu:
- Vanhat linkit sisällössäsi: sivusto, joka oli ennen http:ssä, sisältää tuhansissa artikkeleissa merkintöjä kuten
<img src="http://example.com/wp-content/uploads/...">. WordPress tallentaa nämä linkit sellaisenaan tietokantaan. - Teeman tai lisäosan asetukset, joissa on täydellinen osoite, esimerkiksi logo tai tausta osoitteella
http://. - Ulkoiset osat toiselta sivustolta, jotka ovat saatavilla vain http:n kautta. Ne täytyy korvata tai poistaa.
- Osoitteet kohdassa Asetukset > Yleinen, jotka ovat yhä http:ssä (oppitunti 3.1).
Näin löydät sen
Avaa sivu, paina F12 ja katso välilehteä Console. Selain ilmoittaa jokaisen sekasisällön kohdan ja kyseisen osan osoitteen. Voit myös etsiä sivun lähdekoodista (Ctrl+U) merkintöjä src="http:// ja href="http://. Tavalliset tekstissä olevat linkit toisille sivustoille (<a href="http://...">) eivät aiheuta sekasisältöä; kyse on asioista, joita sivu lataa.
Haku ja korvaus, mutta oikein
Ratkaisu sisältösi vanhoille linkeille on korvata kaikki http://example.com-esiintymät tietokannassa 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 widgetien asetukset on tallennettu serialisoituina. Se näyttää tältä:
s:27:"http://example.com/logo.png";s:27 tarkoittaa: seuraavaksi tulee 27 merkin pituinen teksti. Suoran korvauksen jälkeen teksti on 28 merkkiä pitkä (siihen tuli yksi s lisää), mutta luku on yhä 27. PHP ei voi enää lukea arvoa ja asetus katoaa hiljaisesti: valikko tyhjenee, logo katoaa, widgetit häviävät.
Käytä työkalua, joka päivittää nämä pituudet automaattisesti:
- WP-CLI: ensin katsot, sitten teet.
wp search-replace 'http://example.com' 'https://example.com' --all-tables --dry-run
wp search-replace 'http://example.com' 'https://example.com' --all-tables--dry-run-valinnalla näet, kuinka monta korvausta kussakin taulussa tehtäisiin, muuttamatta mitään.
- Haku ja korvaus -lisäosa, joka tukee serialisoitua tietoa (niitä on useita wordpress.org-lisäosahakemistossa). Poista lisäosa sen jälkeen taas.
Tee aina ensin varmuuskopio (oppitunti 8.1). Älä myöskään koskaan korvaa pelkkää example.com-tekstiä ilman edellä olevaa http://-osaa: silloin muutat myös sähköpostiosoitteita ja muita tekstejä.
Käytännössä: näin se näyttää hallintapaneelissa
Esimerkkinä käytämme DirectAdminia. Muissa paneeleissa on vastaava kytkin "aina https".
- Laita verkkotunnuksen asetuksista päälle Forceer SSL met https omleiding (oppitunti 3.1).
- Valitse verkkotunnuksen kohdalla, pitääkö www ohjautua osoitteeseen ilman www:tä vai päinvastoin (DirectAdminissa verkkotunnuksen asetuksista; muuten uudelleenohjauksella kohdasta Site Omleiden tai
.htaccess-tiedostolla). - Tarkista ketju alla olevalla komennolla tai selaimesi kehittäjätyökaluilla (välilehti Verkko, valintaruutu "Säilytä loki").
Yhteenveto
- Valitse yksi kanoninen osoite ja ohjaa muut kolme muunnelmaa sinne 301:llä (tai 308:lla), yhdellä askeleella.
- Anna vain yhden tahon 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ää serialisoitua tietoa, älä koskaan suoralla SQL-REPLACE-komennolla. - Tee aina ensin varmuuskopio ja ensin koeajo.
Tietovisa
Tehtävä
Tehtävä A3.2: Yksi pääosoite ilman sekasisältöä. Syötä verkkotunnuksesi. Ohjelma avaa neljä muunnelmaa (http ja https, w:llä ja ilman) ja seuraa uudelleenohjauksia. Hyvä tulos on: kaikki neljä päätyvät samaan osoitteeseen https:llä, korkeintaan yhdellä uudelleenohjauksella per muunnelma ja vain pysyvillä koodeilla (301 tai 308). Sen jälkeen ohjelma lukee etusivun HTML:n ja etsii skriptejä, tyylitiedostoja, kuvia, iframeja ja fontteja, jotka ladataan http://:n kautta.
Lue lisää
Nämä artikkelit kuvaavat vaiheet WebOkén paneeleissa; muissa paneeleissa toiminta on vastaavaa.
- DirectAdmin-ohje 6.4: Kävijät aina https-osoitteeseen ohjaaminen
- DirectAdmin-ohje 4.7: Site Redirects: domeinin tai sivun uudelleenohjaus
- 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/
