Modul 3 · 3.2
www, omdirigering og blandet indhold
Modul 3: Adresse, https og brugere · Læsetid: 9 minutter
Læringsmål: Efter denne lektion kan du vælge én hovedadresse, sende alle varianter dertil med én omdirigering og finde og løse blandet indhold.
Nøglebegreber: kanonisk adresse, 301 og 308, omdirigeringskæde, blandet indhold (mixed content), søg og erstat i databasen, serialiserede data
Fire adresser, ét websted
Dit websted kan tilgås via fire adresser:
http://example.com
http://www.example.com
https://example.com
https://www.example.comFor en besøgende gør det ingen forskel, men for søgemaskiner er det fire forskellige adresser med samme indhold. Også cookies (som din login-cookie) gælder pr. navn: den der logger ind på www er ikke logget ind på den version uden www. Derfor vælger du én kanonisk adresse (hovedadressen) og sender de tre andre derhen med en omdirigering.
Hvilken du vælger, er en smagssag (lektion 2.1). Det afgørende er, at hovedadressen er den samme overalt: i DNS'en, i certifikatet, under Indstillinger > Generelt (lektion 3.1) og i omdirigeringerne.
Omdirigering med en 301, i ét trin
En omdirigering er et svar fra serveren: "denne side ligger et andet sted". Browseren går så automatisk til den nye adresse. Koden fortæller, hvilken type omdirigering der er tale om:
| Kode | Betydning | Brug |
|---|---|---|
| 301 | Permanent flyttet | Det faste valg for http til https og for www til domæne uden www (eller omvendt) |
| 308 | Permanent, og metoden (f.eks. en formularindsendelse) forbliver den samme | Kan også bruges til dette formål; browsere og søgemaskiner behandler den som 301 |
| 302 eller 307 | Midlertidig | Kun til noget, der virkelig er midlertidigt, f.eks. en vedligeholdelsesside |
En permanent omdirigering fortæller søgemaskiner, at den nye adresse er den rigtige. Ved en midlertidig bliver den gamle adresse stadig husket.
Vær også opmærksom på kæden. Lad os sige, at din hovedadresse er https://example.com. Så vil du gerne have:
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 200Hver variant ender i ét trin på hovedadressen. Det, der ofte sker, er:
http://www.example.com 301 https://www.example.com/
https://www.example.com 301 https://example.com/Det virker godt nok, men koster et ekstra trin (ekstra ventetid, især på mobil) og et ekstra TLS-håndtryk. Værre er en rundgang: webserveren sender til https, WordPress sender tilbage til http fordi adresserne i indstillingerne stadig står på http, og browseren melder "for mange omdirigeringer". Så sender to indstillinger imod hinanden. Sørg for, at det kun er én part, der sender til https (webserveren eller panelet), og at adresserne i WordPress allerede står på hovedadressen.
WordPress sender også selv videre: hvis nogen beder om https://www.example.com/contact/ mens webstedets adresse er https://example.com, sender WordPress videre til https://example.com/contact/. Det virker kun, hvis forespørgslen når frem til WordPress, altså hvis webserveren også lader navnet www ende på dette websted.
Blandet indhold
Blandet indhold (mixed content) er en https-side, der indlæser dele via http://: et billede, et stylesheet, et script, en skrifttype eller en indlejret video. Browseren anser det for usikkert, fordi disse dele kan blive ændret undervejs.
- Scripts, stylesheets og iframes via http bliver blokeret af browsere. Dit websted ser så ødelagt ud, eller en funktion virker ikke.
- Billeder, lyd og video via http forsøger moderne browsere automatisk at hente via https; lykkes det ikke, bliver de blokeret. Hængelåsen kan så vise en advarsel.
Hvor det kommer fra:
- Gamle links i dit indhold: et websted, der tidligere lå på http, har i tusindvis af indlæg
<img src="http://example.com/wp-content/uploads/...">. WordPress gemmer disse links bogstaveligt i databasen. - Tema- eller pluginindstillinger med en fuld adresse, f.eks. et logo eller en baggrund med
http://. - Eksterne dele fra et andet websted, der kun kan tilgås via http. Dem skal du udskifte eller fjerne.
- Adresser under Indstillinger > Generelt, der stadig står på http (lektion 3.1).
Sådan finder du det
Åbn siden, tryk på F12 og se under fanen Konsol. Browseren melder al blandet indhold med adressen på den pågældende del. Eller søg i sidens kildekode (Ctrl+U) efter src="http:// og href="http://. Almindelige tekstlinks til andre websteder (<a href="http://...">) giver ikke blandet indhold; det handler om ting, som siden indlæser.
Søg og erstat, men gjort rigtigt
Løsningen på gamle links i dit indhold er at erstatte al http://example.com i databasen med https://example.com. Fristelsen er en SQL-kommando som:
UPDATE wp_options SET option_value = REPLACE(option_value, 'http://example.com', 'https://example.com');Gør ikke det. Mange indstillinger fra temaer, plugins og widgets er gemt serialiseret. Det ser sådan ud:
s:27:"http://example.com/logo.png";s:27 betyder: her følger en tekst på 27 tegn. Efter en simpel erstatning er teksten 28 tegn (der kom et s til), men der står stadig 27. PHP kan så ikke længere læse værdien, og indstillingen forsvinder stille: en tom menu, et forsvundet logo, widgets der er væk.
Brug et værktøj, der opdaterer disse længder:
- WP-CLI: først kigge, så udføre.
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, hvor mange erstatninger der ville være pr. tabel, uden at ændre noget.
- Et søg og erstat-plugin, der understøtter serialiserede data (der findes flere i pluginbiblioteket på wordpress.org). Fjern pluginet igen bagefter.
Lav altid først en backup (lektion 8.1). Erstat heller aldrig noget som example.com uden http:// foran: så rammer du også e-mailadresser og anden tekst.
I praksis: sådan ser det ud i et panel
Som eksempel bruger vi DirectAdmin. Andre paneler har en tilsvarende knap til "altid https".
- Slå Gennemtving SSL med https-omdirigering til under domæneindstillingerne (lektion 3.1).
- Vælg ved domænet, om www skal gå til domænet uden www eller omvendt (i DirectAdmin under domæneindstillingerne; ellers med en omdirigering via Omdirigeringer for websted eller
.htaccess). - Kontrollér kæden med kommandoen herunder eller med din browsers udviklerværktøjer (fanen Netværk, afkrydsningsfelt "Bevar log").
Opsummering
- Vælg én kanonisk adresse, og lad de tre andre varianter gå derhen med en 301 (eller 308), i ét trin.
- Lad kun én part sende til https; ellers får du en rundgang.
- Blandet indhold er en https-side, der indlæser dele via http; browserens konsol viser hvilke.
- Gamle links i databasen erstatter du med
wp search-replaceeller et plugin, der forstår serialiserede data, aldrig med et rent SQL-REPLACE. - Altid først en backup, og først en prøverunde.
Quiz
Opgave
Opgave A3.2: Én hovedadresse og intet blandet indhold. Indtast dit domæne. Programmet åbner de fire varianter (http og https, med og uden www) og følger omdirigeringerne. Godt er: alle fire ender på samme adresse med https, med højst én omdirigering pr. variant og kun permanente koder (301 eller 308). Derefter læser programmet HTML'en på forsiden og søger efter scripts, stylesheets, billeder, iframes og skrifttyper, der indlæses via http://.
Læs mere
Disse artikler beskriver trinnene i WebOkés paneler; i andre paneler fungerer de på lignende måde.
- DirectAdmin vejledning 6.4: Besøgende altid sende til https
- DirectAdmin vejledning 4.7: Omdirigeringer for websted: viderestil et domæne eller en side
- Tving besøgende til at blive videresendt til https
- Gratis DNS-kursus 3.4: www, videresendelse og hvad DNS ikke gør
- Blandet indhold (MDN, engelsk): https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content
- wp search-replace (developer.wordpress.org, engelsk): https://developer.wordpress.org/cli/commands/search-replace/
