Modul 3 · 3.2
www, omdirigering och blandat innehåll
Modul 3: Adress, https och användare · Lästid: 9 minuter
Lärandemål: Efter den här lektionen kan du välja en huvudadress, skicka alla varianter till den med en enda omdirigering och upptäcka och åtgärda blandat innehåll.
Nyckelbegrepp: kanonisk adress, 301 och 308, omdirigeringskedja, blandat innehåll (mixed content), sök och ersätt i databasen, serialiserad data
Fyra adresser, en webbplats
Din webbplats går att nå via fyra adresser:
http://example.com
http://www.example.com
https://example.com
https://www.example.comFör en besökare spelar det ingen roll, men för sökmotorer är det fyra olika adresser med samma innehåll. Även cookies (som din inloggningscookie) gäller per namn: den som loggar in på www är inte inloggad på domänen utan www. Därför väljer du en kanonisk adress (huvudadressen) och omdirigerar de andra tre dit.
Vilken du väljer är en smaksak (lektion 2.1). Det viktiga är att huvudadressen är detsamma överallt: i DNS, i certifikatet, i Inställningar > Allmänt (lektion 3.1) och i omdirigeringarna.
Omdirigering med en 301, i ett steg
En omdirigering är ett svar från servern: "den här sidan finns någon annanstans". Webbläsaren går då automatiskt till den nya adressen. Koden anger vilken typ av omdirigering det är:
| Kod | Betydelse | Användning |
|---|---|---|
| 301 | Permanent flyttad | Standardvalet för http till https och för www till domän utan www (eller tvärtom) |
| 308 | Permanent, och metoden (till exempel en formulärinskickning) förblir densamma | Kan också användas för detta ändamål; webbläsare och sökmotorer behandlar den som 301 |
| 302 eller 307 | Tillfällig | Endast för något som verkligen är tillfälligt, till exempel en underhållssida |
En permanent omdirigering talar om för sökmotorer att den nya adressen är den riktiga. Vid en tillfällig omdirigering fortsätter de att komma ihåg den gamla adressen.
Tänk också på kedjan. Säg att din huvudadress är https://example.com. Då vill du ha:
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 200Varje variant kommer fram till huvudadressen i ett steg. Det som ofta händer:
http://www.example.com 301 https://www.example.com/
https://www.example.com 301 https://example.com/Det fungerar, men kostar ett extra steg (extra väntetid, särskilt på mobilen) och en extra TLS-handskakning. Värre är en loop: webbservern skickar till https, WordPress skickar tillbaka till http eftersom adresserna i inställningarna fortfarande är på http, och webbläsaren meddelar "för många omdirigeringar". Då skickar två inställningar mot varandra. Se till att det bara är en part som omdirigerar till https (webbservern eller panelen), och att adresserna i WordPress redan är satta till huvudadressen.
WordPress omdirigerar också själv: om någon begär https://www.example.com/contact/ medan webbplatsadressen är https://example.com, skickar WordPress vidare till https://example.com/contact/. Det fungerar bara om förfrågan når WordPress, det vill säga om webbservern också låter namnet www hamna på denna webbplats.
Blandat innehåll
Blandat innehåll (mixed content) är en https-sida som laddar delar via http://: en bild, ett stilmall, ett skript, ett typsnitt eller en inbäddad video. Webbläsaren anser det osäkert, eftersom dessa delar kan ändras under vägen.
- Skript, stilmallar och iframes via http blockeras av webbläsare. Din webbplats ser då trasig ut eller så fungerar en funktion inte.
- Bilder, ljud och video via http försöker moderna webbläsare automatiskt hämta via https; lyckas inte det, blockeras de. Hänglåset kan då visa en varning.
Varifrån det kommer:
- Gamla länkar i ditt innehåll: en webbplats som tidigare låg på http har i tusentals inlägg
<img src="http://example.com/wp-content/uploads/...">. WordPress sparar de länkarna bokstavligt i databasen. - Tema- eller tilläggsinställningar med en fullständig adress, till exempel en logotyp eller bakgrund med
http://. - Externa delar från en annan webbplats som bara är nåbara via http. De måste du ersätta eller ta bort.
- Adresser i Inställningar > Allmänt som fortfarande är på http (lektion 3.1).
Så hittar du det
Öppna sidan, tryck på F12 och titta på fliken Console. Webbläsaren meddelar allt blandat innehåll med adressen till delen. Eller sök i sidans källkod (Ctrl+U) efter src="http:// och href="http://. Länkar till andra webbplatser i vanlig text (<a href="http://...">) ger inte blandat innehåll; det handlar om sådant som sidan laddar.
Sök och ersätt, men på rätt sätt
Lösningen för gamla länkar i ditt innehåll är att ersätta all http://example.com i databasen med https://example.com. Frestelsen är ett SQL-kommando som:
UPDATE wp_options SET option_value = REPLACE(option_value, 'http://example.com', 'https://example.com');Gör inte det. Många inställningar för teman, tillägg och widgetar är serialiserade. Det ser ut så här:
s:27:"http://example.com/logo.png";s:27 betyder: här följer en text på 27 tecken. Efter en ren ersättning är texten 28 tecken (det tillkom ett s), men det står fortfarande 27. PHP kan då inte längre läsa värdet och inställningen försvinner tyst: en tom meny, en försvunnen logotyp, widgetar som är borta.
Använd ett verktyg som uppdaterar dessa längder:
- WP-CLI: titta först, gör sedan.
wp search-replace 'http://example.com' 'https://example.com' --all-tables --dry-run
wp search-replace 'http://example.com' 'https://example.com' --all-tablesMed --dry-run ser du hur många ersättningar det skulle bli per tabell, utan att ändra något.
- Ett sök-och-ersätt-tillägg som stödjer serialiserad data (det finns flera i tilläggskatalogen på wordpress.org). Ta bort tillägget igen efteråt.
Gör alltid en säkerhetskopia först (lektion 8.1). Ersätt heller aldrig något som example.com utan http:// framför: då drabbas även e-postadresser och andra texter.
I praktiken: så ser det ut i en panel
Som exempel använder vi DirectAdmin. Andra paneler har en liknande knapp för "alltid https".
- Slå på Tvinga SSL med https-omdirigering i domäninställningarna (lektion 3.1).
- Välj för domänen om www ska gå till domän utan www eller tvärtom (i DirectAdmin i domäninställningarna; annars med en omdirigering via Webbplatsomdirigeringar eller
.htaccess). - Kontrollera kedjan med kommandot nedan eller med webbläsarens utvecklarverktyg (fliken Nätverk, kryssrutan "Behåll logg").
Sammanfattning
- Välj en kanonisk adress och låt de andra tre varianterna gå dit med en 301 (eller 308), i ett steg.
- Låt bara en part omdirigera till https; annars får du en loop.
- Blandat innehåll är en https-sida som laddar delar via http; webbläsarens konsol visar vilka.
- Gamla länkar i databasen ersätter du med
wp search-replaceeller ett tillägg som förstår serialiserad data, aldrig med en ren SQL-REPLACE. - Gör alltid en säkerhetskopia först, och gör en testomgång först.
Quiz
Uppgift
Uppgift A3.2: En huvudadress och inget blandat innehåll. Fyll i din domän. Programmet öppnar de fyra varianterna (http och https, med och utan www) och följer omdirigeringarna. Bra är: alla fyra hamnar på samma adress med https, med högst en omdirigering per variant och endast permanenta koder (301 eller 308). Därefter läser programmet HTML-koden för startsidan och letar efter skript, stilmallar, bilder, iframes och typsnitt som laddas via http://.
Läs mer
Dessa artiklar beskriver stegen i WebOkés paneler; i andra paneler fungerar de liknande.
- DirectAdmin-guide 6.4: Besökare alltid till https
- DirectAdmin-guide 4.7: Webbplatsomdirigeringar: vidarebefordra ett domän eller en sida
- Tvinga besökare att omdirigeras till https
- Gratis DNS-kurs 3.4: www, vidarebefordran och vad DNS inte gör
- Blandat innehåll (MDN, på engelska): https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content
- wp search-replace (developer.wordpress.org, på engelska): https://developer.wordpress.org/cli/commands/search-replace/
