Website Migration
Website Works on Old Host but Not New Host
Last reviewed
Direct answer
When the old host still serves the site correctly but the new host does not, the move usually failed at files, database credentials, PHP/runtime mismatch, document root, or DNS/SSL cutover — compare old vs new on a temporary URL before blaming the domain.
A site that still works on the previous host is good news: you have a known-good copy and a rollback path. The new stack is incomplete, misconfigured, or not receiving traffic yet. This guide isolates whether visitors hit the wrong server, whether the destination app cannot boot, or whether DNS and SSL cutover raced ahead of a working destination — then points you at a migration rescue path instead of endless panel guessing.
Key facts
Verifiable numbers and definitions — each claim links to its source.
- WordPress migration docs cover moving files, the database, and updating URLs so the site works on the new host. (Moving WordPress)
- DNS A and AAAA records map the hostname to the server IPs browsers actually contact. (MDN DNS glossary)
- wp-config.php holds database connection settings that must match the new host's database credentials. (Editing wp-config.php)
What the error means
“Works on old, broken on new” is a comparison problem. The old host proves files and data were viable in one environment. The new host must receive a complete file set, a usable database (or equivalent app config), matching runtime (PHP version, extensions, Node, whatever the stack needs), correct document root and rewrite rules, and — only after that — DNS and certificates for the live hostname. Failures cluster: wrong docroot shows a default page or 404; wrong DB credentials show connection errors; missing uploads break media; PHP version gaps throw fatals; DNS still on the old IP makes “the new host” look fine locally while the public internet never reaches it. WordPress sites add wp-config and serialized URL quirks; static or other CMS sites fail for the same hosting and DNS reasons without those WP-specific layers.
Common symptoms
- Old host URL or hosts-file override still loads the full site; new host shows blank, error, or parking page
- Database connection error, critical error, or 500 only on the destination
- New host temporary URL works partially; live domain still serves the old host or a registrar page
- Homepage loads on the new host but images, CSS, or admin assets 404
- Redirect loop or endless bounce to the old domain after cutover
- SSL warning or “Not secure” on the new hostname while the old host was fine
- PHP fatals or missing-extension errors that never appeared on the previous server
Most likely causes
- 01 Incomplete file sync — missing document root contents, uploads, vendor folders, or hidden configs (.htaccess, env files)
- 02 Database not imported, partial import, or app config still pointing at old DB host/user/password
- 03 Document root or subdomain pointed at the wrong folder on the new account
- 04 PHP (or other runtime) version or extensions on the new host incompatible with the site
- 05 DNS A/AAAA or nameservers never updated, or propagation still hitting the old IP
- 06 SSL not issued for the live hostname on the destination, or CDN origin still aimed at the old server
- 07 Rewrite rules, nginx config, or permalinks not rebuilt for Apache vs nginx differences
- 08 File ownership/permissions blocking the web user from reading the migrated tree
What changed before the problem started
- Files and/or database copied to a new hosting account or VPS
- DNS A/AAAA, CNAME, or nameserver change toward the new host
- Temporary URL testing followed by production domain cutover
- SSL certificate installed or CDN proxy enabled on the destination
- PHP version or handler selected differently than on the old host
- Migration plugin, host mover, or manual SFTP/SQL used for the transfer
Troubleshooting steps
- 01
Prove which host the public actually hits
From your machine and a public DNS checker, resolve the live domain and compare the IP to the old vs new host. If the public IP is still the old server, the “new host broken” report is a DNS cutover problem, not an app bug. Success signal: you know whether visitors reach old IP, new IP, or a CDN.
- 02
Keep the old host online as the rollback
Do not cancel or wipe the source account until the destination passes full checks on a temp URL and after cutover. Export a fresh backup from the old host if you have not already. Success signal: you can still load the known-good site and restore from a dated archive.
- 03
Test the destination on temporary URL or hosts file
Use the host’s temporary hostname or a local hosts-file override to the new IP so you can debug without depending on public DNS. Note exact errors (connection, blank, 403, redirect). Success signal: you can reproduce the failure on the new stack alone.
- 04
Match app config to the new database and paths
Confirm the database exists with expected tables and that connection settings in wp-config, .env, or CMS config match the new panel exactly (host is often localhost or a remote hostname). Re-import SQL if tables are missing. Success signal: the app connects and no longer shows a DB error on the temp URL.
- 05
Verify document root and file completeness
Compare folder sizes (especially media/uploads and large vendor trees) between old and new. Confirm the domain’s document root points at the folder that contains the real index. Fix permissions so the web user can read files. Success signal: static assets return 200 on the temp hostname.
- 06
Align runtime, then cut DNS and SSL deliberately
Set PHP (or stack runtime) close to the old host’s working version, enable required extensions, regenerate rewrites/permalinks, install SSL on the destination hostname, then update DNS with a plan to roll back A records if needed. Success signal: temp URL is healthy before public DNS changes.
When to stop troubleshooting
Hand off for migration rescue when you cannot get a clean temp-URL build after matching DB and files, when ecommerce or membership data must stay live during cutover, when DNS/registrar access is locked, when the destination cannot run required runtimes, or when serialized/builder content is widely corrupted. Bring both host panel access, DNS screenshots, and the exact temp-URL error.
Information to collect before requesting help
- 01 Old and new hosting providers, plans, and whether the old site still loads
- 02 How the move was done (plugin, host mover, SFTP + SQL, other CMS tools)
- 03 Temporary URL test result vs live domain behavior
- 04 Public DNS resolution (A/AAAA) vs new host IP
- 05 Exact error text, HTTP status, or blank-page screenshot on the new host
- 06 PHP or runtime versions on old vs new; required extensions if known
- 07 Whether database tables exist on the destination and config credentials were updated
- 08 CDN/Cloudflare status and SSL mode if a proxy is in use
How a professional repairs the problem
We treat this as a controlled hosting move: keep the old host as rollback, rebuild a verified destination on a temporary hostname (files, database, runtime, docroot, rewrites), fix URL and SSL layers without guessing, then cut DNS with measured TTL and origin checks. Post-cutover we purge caches, verify media and forms, and only then recommend retiring the old account — the commercial path is a migration rescue / hosting move, not a vague “speed plugin” detour.
Frequently asked questions
Why does the old host still work if I already “migrated”? +
The new host temp URL works — why is the live domain broken? +
Is this always a WordPress problem? +
Should I delete the old hosting account to “force” the new one? +
Can PHP version alone explain “works on old, fails on new”? +
Do I need a full migration rescue or can I fix one setting? +
Repair dispatch
Still Need Help Fixing Your Website?
If you are not comfortable editing website files, changing server settings, repairing a database, or troubleshooting a live website, professional help may prevent additional damage or downtime. We will review the problem before accepting the repair.
- You will receive a clear explanation of the likely cause.
- We will tell you if the issue falls outside our repair scope.
- No additional work will be performed without approval.
- A backup should be created whenever access and website condition allow it.
Do not share passwords through an unencrypted contact form — use Password Pusher (self-destructing link). Prefer a dedicated Rescue 404 admin account, not your personal owner login; if you cannot create one yet, we will add ours after repair.