Modul 3 · 3.2
www, preusmjeravanje i miješani sadržaj
Modul 3: Adresa, https i korisnici · Vrijeme čitanja: 9 minuta
Cilj učenja: Nakon ove lekcije moći ćete odabrati jednu glavnu adresu, sve varijante preusmjeriti na nju jednim preusmjeravanjem te prepoznati i riješiti miješani sadržaj.
Ključni pojmovi: kanonska adresa, 301 i 308, lanac preusmjeravanja, miješani sadržaj (mixed content), pretraživanje i zamjena u bazi podataka, serijalizirani podaci
Četiri adrese, jedna web-stranica
Vaša web-stranica dostupna je putem četiri adrese:
http://example.com
http://www.example.com
https://example.com
https://www.example.comZa posjetitelja to nije važno, ali za tražilice su to četiri različite adrese s istim sadržajem. Također, kolačići (poput Vašeg kolačića za prijavu) vrijede po nazivu: tko se prijavi na www nije prijavljen na adresi bez www. Zato birate jednu kanonsku adresu (glavnu adresu) i preusmjeravate ostale tri na nju.
Koju ćete odabrati, stvar je osobnog izbora (lekcija 2.1). Bitno je da glavna adresa bude posvuda jednaka: u DNS-u, u certifikatu, u Postavke > Općenito (lekcija 3.1) i u preusmjeravanjima.
Preusmjeravanje pomoću koda 301, u jednom koraku
Preusmjeravanje je odgovor poslužitelja: „ova se stranica nalazi negdje drugdje”. Preglednik tada automatski ide na novu adresu. Kod označava vrstu preusmjeravanja:
| Kod | Značenje | Upotreba |
|---|---|---|
| 301 | Trajno preseljeno | Standardan izbor za preusmjeravanje s http na https i s www na adresu bez www (ili obrnuto) |
| 308 | Trajno, a metoda (npr. slanje obrasca) ostaje ista | Može se koristiti i u tu svrhu; preglednici i tražilice tretiraju ga kao 301 |
| 302 ili 307 | Privremeno | Samo za nešto što je doista privremeno, poput stranice za održavanje |
Trajno preusmjeravanje govori tražilicama da je nova adresa stvarna. Kod privremenog preusmjeravanja tražilice i dalje pamte staru adresu.
Obratite pažnju i na lanac preusmjeravanja. Pretpostavimo da je Vaša glavna adresa https://example.com. Tada želite:
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 200Svaka varijanta dolazi na glavnu adresu u jednom koraku. Ono što se često događa:
http://www.example.com 301 https://www.example.com/
https://www.example.com 301 https://example.com/To doduše funkcionira, ali oduzima dodatni korak (dodatno vrijeme čekanja, osobito na mobitelu) i dodatno TLS rukovanje. Gore je kružno preusmjeravanje: web-poslužitelj preusmjerava na https, WordPress preusmjerava natrag na http jer su adrese u postavkama još uvijek na http, a preglednik javlja „previše preusmjeravanja”. Tada dvije postavke rade jedna protiv druge. Pobrinite se da samo jedna strana preusmjerava na https (web-poslužitelj ili administracijska ploča) i da su adrese u WordPressu već postavljene na glavnu adresu.
WordPress i sam preusmjerava: ako netko zatraži https://www.example.com/contact/, a adresa web-stranice je https://example.com, WordPress preusmjerava na https://example.com/contact/. To funkcionira samo ako zahtjev stigne do WordPressa, dakle ako web-poslužitelj naziv www također usmjerava na ovu web-stranicu.
Miješani sadržaj
Miješani sadržaj (mixed content) je https-stranica koja dijelove učitava putem http://: sliku, stylesheet, skriptu, font ili ugrađeni video. Preglednik to smatra nesigurnim jer se ti dijelovi mogu usput izmijeniti.
- Skripte, stylesheetovi i iframeovi putem http-a preglednici blokiraju. Vaša web-stranica tada izgleda neispravno ili neka funkcija ne radi.
- Slike, audio i video putem http-a moderni preglednici automatski pokušavaju dohvatiti putem https-a; ako to ne uspije, blokiraju se. Lokot tada može prikazati upozorenje.
Odakle to dolazi:
- Stare poveznice u Vašem sadržaju: web-stranica koja je prije bila na http-u ima u tisućama objava zapis poput
<img src="http://example.com/wp-content/uploads/...">. WordPress te poveznice doslovno sprema u bazu podataka. - Postavke teme ili dodatka s potpunom adresom, primjerice logotip ili pozadina s
http://. - Vanjski elementi s druge web-stranice koji su dostupni samo putem http-a. Njih treba zamijeniti ili ukloniti.
- Adrese u Postavke > Općenito koje su još uvijek na http-u (lekcija 3.1).
Kako to pronaći
Otvorite stranicu, pritisnite F12 i pogledajte karticu Console. Preglednik prijavljuje svaki miješani sadržaj s adresom tog elementa. Ili u izvornom kodu stranice (Ctrl+U) potražite src="http:// i href="http://. Obične poveznice prema drugim web-stranicama u tekstu (<a href="http://...">) ne predstavljaju miješani sadržaj; riječ je o onome što stranica učitava.
Pretraživanje i zamjena, ali ispravno
Rješenje za stare poveznice u Vašem sadržaju jest zamijeniti sve pojave http://example.com u bazi podataka s https://example.com. Iskušenje je upotrijebiti SQL naredbu poput:
UPDATE wp_options SET option_value = REPLACE(option_value, 'http://example.com', 'https://example.com');To nemojte raditi. Mnoge postavke tema, dodataka i widgeta spremljene su u serijaliziranom obliku. To izgleda ovako:
s:27:"http://example.com/logo.png";s:27 znači: slijedi tekst od 27 znakova. Nakon obične zamjene tekst ima 28 znakova (dodano je slovo s), ali i dalje piše 27. PHP tada više ne može pročitati vrijednost i postavka jednostavno nestane: prazan izbornik, nestao logotip, widgeti koji su nestali.
Koristite alat koji te duljine ažurira:
- WP-CLI: prvo provjerite, pa tek onda izvršite.
wp search-replace 'http://example.com' 'https://example.com' --all-tables --dry-run
wp search-replace 'http://example.com' 'https://example.com' --all-tablesPomoću --dry-run vidite koliko bi zamjena bilo po tablici, bez stvarne izmjene.
- Dodatak za pretraživanje i zamjenu koji podržava serijalizirane podatke (postoji ih više u direktoriju dodataka na wordpress.org). Nakon toga dodatak ponovno uklonite.
Uvijek prvo izradite sigurnosnu kopiju (lekcija 8.1). Nikada ne zamjenjujte nešto poput example.com bez http:// ispred njega: tako biste zahvatili i e-mail adrese i druge tekstove.
U praksi: kako to izgleda u administracijskoj ploči
Kao primjer koristimo DirectAdmin. Druge administracijske ploče imaju sličnu opciju za „uvijek https”.
- U postavkama domene uključite Force SSL with https redirect (lekcija 3.1).
- Odaberite u postavkama domene treba li www preusmjeriti na adresu bez www ili obrnuto (kod DirectAdmina u postavkama domene; inače preusmjeravanjem putem Site Redirects ili
.htaccess). - Provjerite lanac preusmjeravanja naredbom u nastavku ili pomoću razvojnih alata Vašeg preglednika (kartica Mreža, kvačica „Zadrži zapisnik”).
Sažetak
- Odaberite jednu kanonsku adresu i preostale tri varijante preusmjerite na nju kodom 301 (ili 308), u jednom koraku.
- Neka samo jedna strana preusmjerava na https; inače ćete dobiti kružno preusmjeravanje.
- Miješani sadržaj je https-stranica koja dijelove učitava putem http-a; konzola preglednika pokazuje koje.
- Stare poveznice u bazi podataka zamijenite pomoću
wp search-replaceili dodatka koji razumije serijalizirane podatke, nikada običnom SQL naredbom REPLACE. - Uvijek prvo izradite sigurnosnu kopiju i prvo napravite probni krug.
Kviz
Zadatak
Zadatak A3.2: Jedna glavna adresa i bez miješanog sadržaja. Unesite svoju domenu. Program otvara četiri varijante (http i https, s www i bez www) i prati preusmjeravanja. Dobro je ako sve četiri završavaju na istoj adresi s https, s najviše jednim preusmjeravanjem po varijanti i samo trajnim kodovima (301 ili 308). Nakon toga program čita HTML naslovne stranice i traži skripte, stylesheetove, slike, iframeove i fontove koji se učitavaju putem http://.
Dodatno čitanje
Ovi članci opisuju korake u administracijskim pločama WebOké; u drugim pločama postupak je sličan.
- DirectAdmin priručnik 6.4: Posjetitelje uvijek usmjerite na https
- DirectAdmin priručnik 4.7: Preusmjeravanje stranice: proslijedite domenu ili stranicu
- Obavezno preusmjeravanje posjetitelja na https
- Besplatni DNS tečaj 3.4: www, preusmjeravanje i što DNS ne radi
- Miješani sadržaj (MDN, na engleskom): https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content
- wp search-replace (developer.wordpress.org, na engleskom): https://developer.wordpress.org/cli/commands/search-replace/
