Kort svar: Mangler billeder i WordPress efter en flytning, så åbn et manglende billede i en ny fane og se adressen og statuskoden. Peger den på det gamle domæne, skal adresserne i databasen erstattes med et værktøj, der håndterer serialiserede data, fx
wp search-replace. Giver den 404 på det nye domæne, komwp-content/uploadsikke med; giver den 403, er det rettigheder eller en gammel .htaccess-regel.
Fagligt gennemgået: 2. oktober 2026
Når billederne forsvinder efter en flytning, er der to hovedforklaringer: enten peger adresserne i databasen stadig på det gamle domæne, eller også kom wp-content/uploads ikke med i flytningen. Derudover findes en række mindre klassikere – rettigheder, miniaturer, WebP-filer og CDN – som denne guide også gennemgår.
Højreklik på et manglende billede og vælg at åbne det i en ny fane. Adressen og fejlen i browseren afslører, hvilken af forklaringerne det er.
Før du ændrer noget: Tag en backup af databasen, før du kører søg-og-erstat. En forkert erstatning rammer tusindvis af rækker på én gang og kan ikke fortrydes uden backup. Lad den gamle server og dens filer stå urørt, indtil du har bekræftet, at alle billeder er på plads det nye sted.
1. Læs adressen og statuskoden
Åbn browserens udviklerværktøjer (F12), vælg fanen Netværk, filtrér på billeder og genindlæs siden. De røde linjer viser præcis, hvilke billeder der fejler, og hvorfor:
| Det ser du | Årsag | Gå til |
|---|---|---|
| Adressen indeholder det gamle domæne | Gamle URL’er i databasen | Trin 2 |
| Nyt domæne, status 404 | Filen findes ikke på den nye server | Trin 3 |
| Nyt domæne, status 403 | Rettigheder, ejerskab eller .htaccess-regel | Trin 5 |
| Billedet blokeres som „mixed content“ | Adressen starter med http på et https-site | Trin 2 |
| Kun miniaturer eller beskårne udgaver fejler | Skalerede størrelser mangler | Trin 4 |
Fejl kun på .webp– eller .avif-adresser | Optimerede filer kom ikke med | Trin 5 |
| Filen findes, men ikke i mediebiblioteket | Databaseposterne mangler | Trin 6 |
2. Erstat det gamle domæne i databasen
Peger adressen på det gamle domæne, ligger de gamle adresser i databasen. WordPress gemmer den fulde URL i indholdet, og en flytning ændrer den ikke af sig selv.
Brug et søg-og-erstat-værktøj, der håndterer serialiserede data – ikke en simpel SQL-erstatning, som ødelægger indstillinger gemt som arrays, fordi tekstlængden står angivet i dem. WP-CLI gør det korrekt. Kør først en prøvekørsel, der kun tæller:
wp search-replace 'https://gammeltdomaene.dk' 'https://nytdomaene.dk' --skip-columns=guid --dry-run
wp search-replace 'https://gammeltdomaene.dk' 'https://nytdomaene.dk' --skip-columns=guid
Undlad bevidst guid. Den skal ikke ændres – den bruges som unik identifikator, ikke som adresse.
Varianter, der ofte bliver glemt
- http og www: det gamle domæne kan stå som både
http://,https://, med og udenwww. Kør en erstatning for hver variant, der findes. - Escaped adresser: sidebyggere gemmer ofte data som JSON, hvor adressen står som
https:\/\/gammeltdomaene.dk. Søg også efter den form. - Egne tabeller: sidebyggere og plugins har nogle gange egne tabeller uden WordPress-præfikset. Brug
--all-tablesfor at få dem med. - Genereret CSS: sidebyggere gemmer baggrundsbilleder i genererede CSS-filer. Brug byggerens eget værktøj til at regenerere CSS eller erstatte URL’er efter søg-og-erstat.
Tjek også indstillingerne upload_path og upload_url_path med wp option get upload_path. Er de sat til en absolut sti eller adresse fra den gamle server, leder WordPress det forkerte sted, også for nye uploads. Normalt skal begge være tomme.
3. Kopiér uploads-mappen, hvis filerne mangler
Peger adressen rigtigt, men billedet giver 404, så kom filerne ikke med. Tjek om wp-content/uploads findes og har indhold. Mangler den, skal den kopieres fra den gamle server eller hentes fra en backup.
Det er den mest almindelige fejl ved manuelle flytninger, fordi uploads-mappen ofte er den største og timer ud undervejs. Har du SSH på begge servere, er rsync mere robust end en FTP-overførsel, fordi den kan genoptages og kun kopierer det, der mangler:
rsync -avz bruger@gammelserver:/sti/til/wp-content/uploads/ wp-content/uploads/
Kommer sitet fra en Windows-server, så tjek store og små bogstaver. Windows skelner ikke mellem Billede.JPG og billede.jpg, men det gør en Linux-server. Står filnavnet med store bogstaver på disken og små i databasen, giver billedet 404.
Har du flyttet med et plugin, der pakker sitet i én stor fil, så tjek også pluginnets log for „skipped“ eller „timeout“. Mange af dem springer stille filer over, som er større end en grænse, og så mangler præcis de største billeder – bannere og herobilleder – mens alt andet er på plads.
4. Genskab miniaturer og andre billedstørrelser

Er det kun de små udgaver – miniaturer i oversigter, produktbilleder i gridet – der mangler, mens originalen kan åbnes, så er det de skalerede størrelser, der ikke kom med eller aldrig blev lavet. WordPress laver flere kopier af hvert billede ved upload, og et nyt tema eller en webshop kan kræve størrelser, det gamle ikke havde.
wp media regenerate --only-missing --yes
Med --only-missing laves kun de størrelser, der mangler, hvilket sparer tid og plads. Uden WP-CLI kan et plugin til at genskabe miniaturer gøre det samme. Det tager tid på et stort mediebibliotek, så kør det uden for spidsbelastning. For webshops, se også uskarpe produktbilleder efter temaskift.
Når kun én type sider mangler billeder
Mangler billederne kun på én bestemt type sider – fx kun i bloggen, kun i produktgalleriet eller kun i sidebyggerens sektioner – så er adresserne gemt et sted, søg-og-erstat ikke nåede: i temaets tilpasningsindstillinger, i sidebyggerens egne tabeller eller som absolutte stier i et plugin. Kør søg-og-erstat igen med --all-tables, og tjek bagefter Udseende → Tilpas for logo og baggrundsbilleder, som ofte skal vælges forfra.
5. Når serveren nægter at vise billederne
Får du en 403 Forbidden på selve billedadressen, findes filen, men webserveren må ikke læse den. Det er rettigheder eller ejerskab efter flytningen: filer skal stå til 644 og mapper til 755, og de skal ejes af den bruger, webserveren kører som. Se filrettigheder i WordPress.
find wp-content/uploads -type d -exec chmod 755 {} \;
find wp-content/uploads -type f -exec chmod 644 {} \;
En anden klassiker er en .htaccess i uploads-mappen fra den gamle server med regler mod hotlinking, som nu rammer dit eget nye domæne – slet eller ret den. Og hentes billederne fra et CDN, skal CDN’et pege på den nye server og have cachen ryddet; ellers serverer det stadig den gamle placering.
WebP- og AVIF-udgaver kan også drille. Har et optimeringsplugin på den gamle server lavet .webp-filer og omskrevet adresserne, men filerne ikke kom med, så mangler billederne kun i browsere, der beder om WebP. Slå pluginnets omskrivning fra, eller lad det generere filerne igen.
Er sitet samtidig skiftet til https, blokerer browseren billeder, der stadig hentes over http. Det ses som „mixed content“ i konsollen og løses med søg-og-erstat fra http:// til https://. Se mixed content efter SSL.
6. Filerne er der, men ikke i mediebiblioteket
Så mangler databasens poster for filerne. Filerne findes, men WordPress ved ikke, at de er der – typisk fordi kun filerne blev flyttet, eller fordi databasen kom fra en ældre backup end filerne. Med WP-CLI kan du importere filer til mediebiblioteket, og et plugin til at synkronisere mediebiblioteket kan bygge posterne op igen ud fra filerne. Vær opmærksom på, at nyoprettede poster ikke automatisk bliver koblet til de indlæg, der brugte billederne; det kræver, at databasen og filerne kommer fra samme tidspunkt.
Tjekliste, før du erklærer flytningen færdig
- Sammenlign antallet af filer i
wp-content/uploadspå gammel og ny server – tallene skal være ens (find wp-content/uploads -type f | wc -l). - Søg i databasen efter det gamle domæne, fx med
wp db search 'gammeltdomaene.dk'. Resultatet skal være nul rækker, ellers er noget ikke erstattet. - Åbn forsiden, en artikel, et produkt og mediebiblioteket i et privat vindue – fire sider, der tilsammen bruger de fleste billedstørrelser.
- Upload et nyt billede, og se, at det vises. Det tester rettighederne på den nye server.
- Ryd side-, CDN- og browsercache, og tjek konsollen for mixed content.
Undgå det næste gang
En flytning bør laves med et værktøj, der tager filer og database fra samme tidspunkt og retter adresserne undervejs – og testes, før domænet peges om. Hos Hostious er migrering af WordPress- og WooCommerce-sites gratis, så du ikke selv skal flytte uploads-mappen. Se også hvordan du flytter en WordPress-hjemmeside og tjeklisten efter flytningen.
Læs også
- Hub: Migrering og flytning – alle guides om emnet samlet ét sted
- Efter flytningen: tjeklisten, der fanger alt det glemte
- Mixed content efter SSL – når hængelåsen ikke bliver hel
- Filrettigheder i WordPress – hvad 644 og 755 betyder
- Gratis migrering – vi flytter dit WordPress-site uden beregning
Ofte stillede spørgsmål om manglende billeder
Kan jeg bare erstatte adresserne med SQL?
Nej. Mange indstillinger er gemt serialiseret, hvor tekstlængden står angivet. En simpel erstatning ødelægger dem.
Hvorfor virker nogle billeder og ikke andre?
Typisk fordi de nyeste blev uploadet efter flytningen, mens de gamle stadig peger på det tidligere domæne.
Hvorfor mangler kun miniaturerne, mens originalbillederne virker?
Fordi de skalerede størrelser ikke kom med eller aldrig blev lavet til det nye tema. Kør wp media regenerate, eller brug et plugin til at genskabe miniaturer, så WordPress laver alle størrelser igen.
Billedet giver 403 Forbidden, selv om filen findes. Hvad er galt?
Webserveren må ikke læse filen: rettighederne er strammere end 644/755, ejeren er forkert, eller en .htaccess i uploads-mappen blokerer. Ret rettighederne, og tjek for gamle hotlink-regler.
Udgivet 28. august 2026Opdateret 3. oktober 2026Fagligt gennemgået 2. oktober 2026
