A Bluehost site usually arrives carrying a caching drop-in that survives the copy and quietly stops the new host caching anything. That is most of this migration in one sentence.
Most of a WordPress site copies cleanly. The exceptions are the files the host dropped into wp-content, and they are the ones that cause trouble.
advanced-cache.php and object-cache.php live in wp-content and copy across like any other file. They keep addressing a cache layer that does not exist here, and the symptom is a site that simply will not cache rather than an error anybody sees.
Plugins installed to manage a Bluehost account have no purpose on any other host, and several keep contacting services that are no longer part of your stack.
Anything the host placed there loads on every single request and cannot be switched off from the admin, so it is cleared as part of the copy rather than left in place.
Years of shared hosting leaves redirects, hotlink protection and caching directives in one file. Those are read and reimplemented rather than pasted into a stack that does not use them.
Sites on long-unupdated bundled versions are the ones most likely to surprise you at cutover, so updates are rehearsed on a clone first.
The order matters. Copying everything faithfully is exactly what leaves a site that refuses to cache and nobody can explain why.
A migrated site with a stale drop-in in place looks like a hosting problem. It is a leftover file, and it is the difference between a fast site and a puzzling one.
These are the specific things a Bluehost site needs, beyond copying files and database.
| Setting | What we do | Why |
|---|---|---|
| Cache drop-ins | Removed from wp-content before the site is staged | advanced-cache.php survives a file copy and keeps addressing a cache that no longer exists, and the result is a site that will not cache with nothing in the logs to explain it. |
| Bundled platform plugins | Audited, and removed where the host was their only purpose | Plugins that existed to manage a hosting account are pure overhead once you leave, and some keep calling services that will not answer. |
| mu-plugins directory | Cleared of host-installed code | Anything left there loads on every request and offers no way to disable it from the admin. |
| Accumulated .htaccess | Read, categorised and reimplemented rather than copied | A file that old usually holds redirects and protection rules whose purpose nobody recorded at the time. |
| Core and plugin versions | Brought current on a clone before cutover | A site that has not been updated in years is precisely the one where an update needs rehearsing somewhere other than production. |
Every plan includes free migration, daily backups, SSL and 24/7 support.
Free migration, drop-ins cleared, and platform plugins that do not follow you.