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 rette 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 nå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 det samme indhold. Cookies (som din login-cookie) gælder også pr. navn: Er du logget ind på www, er du ikke logget ind på domænet uden www. Derfor vælger du én kanonisk adresse (hovedadressen) og sender de tre andre dertil med en omdirigering.
Hvilken du vælger, er en smagssag (lektion 2.1). Det vigtige er, at hovedadressen er den samme overalt: i DNS, i certifikatet, i 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 slags omdirigering det er:
| Kode | Betydning | Anvendelse |
|---|---|---|
| 301 | Flyttet permanent | Standardvalget fra http til https og fra www til domænet uden www (eller omvendt) |
| 308 | Permanent, og metoden (for eksempel en formularindsendelse) forbliver den samme | Kan også bruges til dette; browsere og søgemaskiner behandler den som en 301 |
| 302 eller 307 | Midlertidig | Kun til noget, der virkelig er midlertidigt, som en vedligeholdelsesside |
En permanent omdirigering fortæller søgemaskinerne, at den nye adresse er den rigtige. Ved en midlertidig husker de fortsat den gamle adresse.
Hold også øje med kæden. Lad os sige, at din hovedadresse er https://example.com. Så vil du 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 når hovedadressen i ét trin. Det, der ofte sker:
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 løkke: 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å arbejder to indstillinger imod hinanden. Sørg for, at kun én part omdirigerer til https (webserveren eller panelet), og at adresserne i WordPress allerede står på hovedadressen.
WordPress omdirigerer også selv: Beder nogen 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 pege på dette websted.
Blandet indhold
Blandet indhold (mixed content) er en https-side, der indlæser elementer via http://: et billede, et stylesheet, et script, en skrifttype eller en indlejret video. Browseren anser det for usikkert, fordi de elementer 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 kørte på http, har i tusindvis af indlæg
<img src="http://example.com/wp-content/uploads/...">. WordPress gemmer de links ordret i databasen. - Tema- eller pluginindstillinger med en fuld adresse, for eksempel et logo eller en baggrund med
http://. - Eksterne elementer fra et andet websted, der kun kan nås via http. Dem skal du erstatte eller fjerne.
- Adresser i 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 Console (Konsol). Browseren melder hvert tilfælde af blandet indhold med elementets adresse. Du kan også søge i sidens kildekode (Ctrl+U) efter src="http:// og href="http://. Links til andre websteder i almindelig tekst (<a href="http://...">) giver ikke blandet indhold; det handler om ting, som siden indlæser.
Søg og erstat, men gør det rigtigt
Løsningen på gamle links i dit indhold er at erstatte alle 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');Lad være med det. Mange indstillinger for 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 i stilhed: en tom menu, et forsvundet logo, widgets der er væk.
Brug et værktøj, der opdaterer de længder, og tag altid en backup først (lektion 8.1): Søg og erstat har ingen papirkurv.
- WP-CLI: Først kigge, så gøre. Gå i terminalen til mappen med din WordPress, og kør først prøverunden (første linje), og først derefter den rigtige (anden linje).
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=guidMed --dry-run ser du, hvor mange erstatninger der ville blive foretaget pr. tabel, uden at noget ændres. --skip-columns=guid lader indlæggenes faste id'er (kolonnen guid) være i fred; WordPress anbefaler aldrig at ændre dem. Uden ekstra valgmulighed arbejder WP-CLI kun på WordPress' egne tabeller. Har et plugin egne tabeller med samme præfiks, så tilføj --all-tables-with-prefix. Brug kun --all-tables, hvis du ved hvorfor: Det rammer alle tabeller i databasen, også dem fra et andet websted eller program.
- Et søg og erstat-plugin, der understøtter serialiserede data (der findes flere i plugin-mappen på wordpress.org). Brug også her først prøvetilstanden, og slet pluginet bagefter.
Erstat aldrig noget som example.com uden http:// eller https:// foran: Så rammer du også e-mailadresser og anden tekst. Hele fremgangsmåden, også hvis du ikke har en terminal, står i vidensbaseartiklen om søg og erstat i WordPress-databasen (se Læs mere).
I praksis: sådan ser det ud i et panel
Som eksempel bruger vi DirectAdmin. Andre paneler har en lignende kontakt til "altid https".
- Slå Gennemtving SSL med https-omdirigering til i domæneindstillingerne (lektion 3.1).
- Vælg for domænet, om www skal gå til domænet uden www eller omvendt (i DirectAdmin i domæneindstillingerne; ellers med en omdirigering via Omdirigeringer for websted eller
.htaccess). - Kontrollér kæden med opgaven nedenfor eller med browserens udviklerværktøjer (fanen Netværk, afkrydsningsfeltet "Bevar log").
Opsummering
- Vælg én kanonisk adresse, og lad de tre andre varianter gå dertil med en 301 (eller 308), i ét trin.
- Lad kun én part omdirigere til https; ellers får du en løkke.
- Blandet indhold er en https-side, der indlæser elementer via http; browserkonsollen viser hvilke.
- Gamle links i databasen erstatter du med
wp search-replaceeller et plugin, der forstår serialiserede data, aldrig med en simpel SQL-REPLACE. - Altid en backup først og en prøverunde først (
--dry-run); lad kolonnenguidvære, og hold dig til WordPress' tabeller.
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. Det er i orden, når alle fire ender på den samme adresse med https, med højst én omdirigering pr. variant og kun permanente koder (301 eller 308). Derefter læser programmet forsidens HTML og leder efter scripts, stylesheets, billeder, iframes og skrifttyper, der indlæses via http://.
Læs mere
Disse artikler beskriver trinene i WebOkés paneler; i andre paneler fungerer det på lignende måde.
- DirectAdmin vejledning 6.4: Besøgende altid sende til https
- DirectAdmin vejledning 4.7: Omdirigeringer for websted: videresend et domæne eller en side
- Søg og erstat i WordPress-databasen
- Tving besøgende til at bruge 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/
