Migracija WordPress sajta s jednog hostinga na drugi zvuči kao tehnički zahtjevna operacija — i zna biti, ako se radi pogrešno. Ovaj vodič pokriva univerzalni redoslijed koraka koji radi neovisno o tome odakle dolaziš i gdje ideš, s naglaskom na to da posjetitelji i tražilice nikad ne dožive downtime.
Postupak je isti za shared, VPS, ili managed hosting. Razlikuje se samo alat — ali logika je uvijek ista: napravi novu kopiju, testiraj je, pa promijeni DNS.
Zlatno pravilo: nikad ne radi migraciju "in place"
Najčešća greška: ljudi obrišu sajt sa starog hostinga i počnu raditi novi. Tada svaka greška znači stvarni downtime. Pravilan pristup:
- Stari sajt ostaje na staroj domeni i staroj IP adresi
- Novi sajt se gradi paralelno na novom hostingu, na privremenoj adresi
- Testiraš dok ne radi 100%
- Promijeniš DNS — posjetitelji se prebacuju postupno
- Stari sajt ostaje aktivan 7+ dana kao backup
Korak 1: Audit prije migracije
Prije nego išta dirneš, dokumentiraj:
- Veličina sajta: ukupno GB (slike + baza). Bitno za izbor metode prijenosa.
- Broj fileova (inoda): WordPress shop s 10.000 produkata može imati 500.000+ fileova. Provjeri da novi hosting podržava.
- PHP verzija: stari hosting ima 7.4, novi ima 8.3 — provjeri da li tema i pluginovi rade na novoj verziji.
- MySQL/MariaDB verzija: stara baza je 5.7, nova je 10.11 MariaDB — provjeri da nema deprecated SQL syntaksu.
- Custom server config: .htaccess pravila, mod_rewrite, posebni PHP iniji, cron jobovi.
- Email računi: ako voditelj domene seli i email — popisati sve mailove.
- Lista pluginova: ekstenzije koje rade s eksternim servisima (Stripe, Mailchimp) trebaju re-autorizaciju.
Korak 2: Postavi novi hosting
Na novom hostingu:
- Stvori cPanel account ili sličan panel
- Postavi PHP verziju koja odgovara staroj (postupno se nadograđuje kasnije)
- Provjeri da je MySQL/MariaDB ista ili novija verzija
- Stvori praznu bazu i database usera
- Pripremi privremeni URL (npr. preko hosts file ili preview domene)
Korak 3: Backup starog sajta
Tri opcije, ovisno o veličini i pristupu:
Opcija A: All-in-One WP Migration plugin — za sajtove do 5 GB, najjednostavnije. Export → import na novom hostingu. Ograničenje: dolazi s upload limitom na free verziji, treba paid extension za preko 512 MB.
Opcija B: Duplicator ili UpdraftPlus — za sajtove do 20 GB, dobra automatizacija, podržava S3, Dropbox kao međusprema.
Opcija C: Manual via SSH/SCP — za sajtove preko 20 GB, najbrža metoda za velike baze. Korake ću razložiti dolje.
Korak 4: Manual prijenos (za velike sajtove)
Na starom hostingu, preko SSH:
# Dump baze
mysqldump -u korisnik -p baza --single-transaction --quick > baza.sql
# Komprimiraj fileove
tar -czf wp-files.tar.gz public_html/
# Prebaci na novi hosting
scp baza.sql wp-files.tar.gz korisnik@novi-server:/home/korisnik/
Na novom hostingu:
# Raspakiraj
tar -xzf wp-files.tar.gz -C public_html/
# Importaj bazu
mysql -u korisnik -p nova_baza < baza.sql
Korak 5: Konfiguriraj WordPress za novi server
Edit wp-config.php:
- Promijeni
DB_HOST,DB_NAME,DB_USER,DB_PASSWORDna nove vrijednosti - Promijeni
WP_HOMEiWP_SITEURLako koristi privremenu domenu za testiranje - Privremeno postavi
WP_DEBUG_LOGna true za hvatanje grešaka
Korak 6: Test preko hosts filea
Ovo je kritičan korak — testiraš novi sajt na pravoj domeni, ali samo s tvog kompjutera.
Na svom računalu edituj hosts file (/etc/hosts na Linux/macOS, C:\Windows\System32\drivers\etc\hosts na Windows):
123.45.67.89 tvojdomena.hr
123.45.67.89 www.tvojdomena.hr
Gdje je IP adresa novog hostinga. Sad kad odeš na tvojdomena.hr, gledaš novi server, ali svi ostali još uvijek vide stari. Ovo daje vremena da:
- Provjeriš da svaka stranica radi
- Otvoriš admin i provjeriš pluginove
- Pokreneš checkout testiranje (ako je shop)
- Provjeriš da search funkcionira
- Pokreneš sitemap i potvrdi da je on dostupan
Korak 7: TTL priprema (24 sata prije DNS prebacivanja)
Otvori DNS zonu trenutne domene i smanji TTL na A i CNAME zapisima na 300 sekundi (5 minuta). Defaultno je 3600 ili 86400 — to znači da DNS propagacija može trajati 24 sata. S TTL 300, propagacija ide za 5–10 minuta.
Pričekaj minimum trenutni TTL prije nego promijeniš IP. Ako je trenutni TTL bio 3600, čekaš 1 sat da svi DNS resolveri skinu novi TTL.
Korak 8: DNS switch
Promijeni A record na IP novog hostinga. Ako koristiš www CNAME, ostane isti.
U narednih 5–15 minuta posjetitelji se postupno prebacuju na novi server. Neki će još neko vrijeme gledati stari (zbog browser cachea), ali nitko ne dobiva 404 ili 500 — oba sajta rade.
Korak 9: Monitoring prvih 60 minuta
- Otvori Google Analytics real-time — gledaš da li promet pada
- Provjeravaj uptime monitor (UptimeRobot ili sličan)
- Test ručno na 3G mreži (drugi DNS resolver, drugi cache)
- Provjeri checkout flow ako je shop
- Provjeri error log na novom serveru
Korak 10: Email migration (ako voditelj seli)
Najopasniji dio — email mora teći cijelo vrijeme. Postupak:
- Stvori sve mailove na novom serveru
- Postavi MX record na novi server
- Pričekaj 24h da staro hosting prestane primati nove poruke (dok DNS još propagira na neke serverice)
- Backupaj sve inbox-eve sa starog (IMAP backup)
- Importaj backup na nove inboxove (preko imapsync alata)
- Tek tada otkaži stari hosting
Korak 11: Sigurnost — 7 dana monitoring
Stari hosting ostavi aktivan 7+ dana. Razlozi:
- Neki email-ovi mogu doći na stari MX zbog cachea
- Treba ti pristup ako otkriješ baš sad da nešto nedostaje (slika, file, log)
- Mogu se dogoditi DNS issues kod nekih posjetitelja koji koriste neuobičajene DNS resolvere
Korak 12: Post-migration optimizacija
Tek nakon što sve radi 7+ dana stabilno:
- Nadograđi PHP na najnoviju LTS verziju
- Aktiviraj object cache (Redis ili Memcached)
- Aktiviraj OPcache
- Postavi page caching (LiteSpeed Cache, WP Rocket, ili AccelerateWP)
- Provjeri Imagify/WebP konverziju slika
- Provjeri Lighthouse score
- Provjeri Search Console nakon 7 dana — da li su sve stranice indeksirane
Što može poći po krivu
Problem 1: serijalizirani podaci ne rade nakon search-replace — koristi WP-CLI wp search-replace ili Better Search Replace plugin koji čuva serialization.
Problem 2: ne radi admin nakon prijenosa — provjeri session i cookie domain u wp-config.php, isprazni transient cache.
Problem 3: pojavljuju se mixed content warnings — koristi Really Simple SSL ili search-replace iz http:// u https:// kroz cijelu bazu.
Problem 4: WP cron ne radi — postavi sistemski cron na novom serveru umjesto WP-Cron defaulta (wget -q -O - http://tvojdomena.hr/wp-cron.php svake 5 minuta).
Problem 5: pluginovi traže re-aktivaciju — license-bound pluginovi (Yoast Premium, WP Rocket) trebaju ponovnu aktivaciju s novim hostom.
WMD migracija — kad ti ne treba ovaj vodič
Ako ne želiš sam prolaziti 12 koraka, šalješ pristupne podatke od starog hostinga i mi ti odradimo cijelu migraciju. Standardno za WordPress: 2–4 sata, bez downtime-a, test na hosts file prije DNS switch-a, 7 dana monitoring, sve uključeno u prvu pretplatu.
Sve PHP verzije iz LTS, AccelerateWP server-side cache, JetBackup s restore-on-demand, Imunify360 za sigurnost, 24/7/365 support. Cijena koju vidiš pri ugovaranju je cijena obnove. Bez skrivenih troškova, bez paywall-a.