How to Migrate a WordPress Site to Ultra Web Hosting

WordPress | Updated July 2026

Moving a WordPress site to Ultra Web Hosting is one of the most common jobs our support team helps with, and it is far less scary than it looks once you understand that a WordPress site is really just two things bolted together: a folder of files and a MySQL database. This guide covers both the easy plugin-driven route and the full manual migration, how to change the domain without wrecking your content, how to test before you flip DNS, and how to clean up the loose ends that break sites right after a move.

Do Not Skip This

Test on Our Server Before Flipping DNS

The single biggest cause of downtime during a migration is changing the domain's DNS before confirming the copy actually works here. Load the site on our server first using a hosts-file edit or a temporary URL, fix anything broken, and only then point the domain. Section 07 shows you how, and it turns a stressful cutover into a non-event.

  • Symptom: visitors hit a half-working or broken site during the move
  • Cause: DNS switched before the destination copy was verified
  • Fix: preview via hosts file or temp URL, verify, then change DNS

01. What You Are Actually Moving

WordPress feels like one thing when you use it, but on disk it is two separate pieces that both have to arrive intact for the site to work. Understanding the split makes every step below make sense.

  • The files - everything in the WordPress folder. The part that holds your content is wp-content: your active theme, your plugins, and the uploads directory with every image and media file you have ever added. The WordPress core files (wp-admin, wp-includes) matter too, but those are identical for a given version and can just be reinstalled fresh.
  • The database - a MySQL database that holds all of your posts, pages, comments, users, and settings. This is the actual content of your site. Lose it and you lose everything but the pictures.
  • wp-config.php - the small file in the WordPress root that tells WordPress which database to connect to, and with which username and password. This is the one file you always edit by hand after a move, because the database credentials on our server are different from the old host's.
Note

If you are starting a brand-new site rather than moving an existing one, you do not need any of this. Just install WordPress fresh with our one-click installer. See How to Install WordPress.

02. Before You Start

A few minutes of preparation on both ends prevents most migration headaches. Do these before you copy anything.

  1. Take a full backup of the source site. Files and database, from the old host, saved somewhere off both servers. This is your safety net if anything goes wrong. Our guide on How to Back Up Your Website walks through the options.
  2. Note the current PHP version the site runs on the old host (usually shown in its control panel or via a plugin like Site Health). You will match it here at first, then upgrade later once the site is confirmed working. Jumping PHP versions during a move adds variables you do not want.
  3. Create the destination cPanel account on Ultra Web Hosting for the domain, if it does not exist yet.
  4. Create an empty MySQL database and a database user on our server, and add the user to the database with all privileges. You will point the migrated site at these. Walk through it with How to Create a MySQL Database and User.
Write Down the Database Details

Keep the destination database name, database username, and password handy in a text file. Note that cPanel prefixes both the database and user with your account name, so a database you name wp becomes something like cpuser_wp. You will paste all three values into wp-config.php later, and getting the prefixed name wrong is the most common reason for the dreaded database connection error.

03. Plugin Migration vs Manual Migration

There are two ways to do this. A migration plugin packages the whole site into a single file and unpacks it here, or you move the files and database yourself. Neither is wrong. The right choice depends on the size of the site and how comfortable you are with FTP and phpMyAdmin.

Best for Large or Broken Sites

Manual Migration

You download the files over FTP, export the database from phpMyAdmin, upload both to our server, and edit wp-config.php by hand. More steps, but no size limits and it works when a site is too broken to run a plugin.

  • No file-size ceiling, ideal for big media libraries
  • Works even if wp-admin is inaccessible
  • You handle the search-replace yourself
  • Requires comfort with FTP and phpMyAdmin
Rule of Thumb

If your full site backup is under about 250 MB and wp-admin still loads on the old host, use the plugin method in Section 04. If it is larger than that, or the old site is hacked or crashing, go manual in Section 05. For a hacked source site, clean it first: see How to Fix a Hacked WordPress Site so you do not carry the infection across.

04. Method 1: Plugin Migration

This is the path most people should take. The two most popular tools are All-in-One WP Migration and Duplicator. The workflow is nearly identical for both.

On the Old Host: Export

  1. Log in to the old site's wp-admin and install and activate the migration plugin (Plugins > Add New).
  2. For All-in-One WP Migration, open the plugin, choose Export To > File, and let it build a single .wpress package. Download that file.
  3. For Duplicator, create a new package and let it build. Download both the Archive (a zip of your whole site) and the Installer (installer.php).
Watch the Free-Tier Size Limit

The free version of All-in-One WP Migration imports files only up to a fixed size (often around 256 MB, and PHP upload limits can make the effective ceiling lower). If your export is larger, the import will fail partway. Either buy the paid extension, or switch to the manual method in Section 05, which has no size limit. Do not try to fight the limit with repeated retries.

On Ultra Web Hosting: Import

  1. Install a fresh copy of WordPress on your account for the domain using our one-click installer (How to Install WordPress). The plugin import will overwrite this fresh install with your old content.
  2. Log in to the new WordPress wp-admin, install and activate the same migration plugin you used on the old host.
  3. For All-in-One WP Migration, choose Import From > File and upload the .wpress package. For Duplicator, upload the archive and installer.php to the site root over FTP, then run installer.php in your browser and follow its prompts.
  4. When the import finishes, it prompts you to re-save your permalinks. Do it. Then log in again (your old admin password came across with the database).
Tip

All-in-One WP Migration automatically rewrites the domain inside the database during import, so if the domain name is not changing you are essentially done after the import and permalink re-save. If you are also changing the domain, confirm the new URLs took hold under Settings > General, and read Section 06 on serialized data.

05. Method 2: Manual Migration

The manual route has more moving parts but no limits, and it is the only option when a site is too large or too broken to run a plugin. Do it in this order.

Step 1: Download the Files

  1. Connect to the old host over FTP or SFTP with a client like FileZilla.
  2. Download the entire WordPress folder, including wp-content, wp-config.php, and the .htaccess file. If you only want to move content, at minimum grab all of wp-content.

Step 2: Export the Database

  1. On the old host, open phpMyAdmin and select the site's database.
  2. Click the Export tab, keep the Quick method and SQL format, and click Go to download a .sql file.

Step 3: Upload Files to Ultra Web Hosting

  1. Connect to your Ultra Web Hosting account over FTP (or use the cPanel File Manager).
  2. Upload the files into the domain's document root (public_html for a primary domain, or the addon domain's folder). Leave the old wp-config.php out for now, or plan to edit it in the next step.

Step 4: Import the Database Here

  1. In cPanel, open phpMyAdmin and select the empty database you created in Section 02.
  2. Click Import, choose your .sql file, and click Go. For a very large file, use the cPanel File Manager to upload the .sql first, then import, to avoid browser timeouts.

Step 5: Edit wp-config.php

Open wp-config.php in the File Manager code editor and set the three database lines to the values you created on our server:

define( 'DB_NAME', 'cpuser_wp' );
define( 'DB_USER', 'cpuser_wpuser' );
define( 'DB_PASSWORD', 'your-strong-password' );
define( 'DB_HOST', 'localhost' );
DB_HOST Is Almost Always localhost

On our shared servers the database runs on the same machine as the site, so DB_HOST is localhost. If the old host used a remote database hostname, change it to localhost here or WordPress cannot connect. Use the prefixed database and user names exactly as cPanel created them.

06. Updating the Site URL and Search-Replace

If your domain name is staying the same, you can skip most of this. If the domain is changing (for example moving from a temporary URL, a staging subdomain, or an old domain to a new one), the old domain is baked into the database in thousands of places and has to be replaced correctly.

For a quick fix that gets you into the dashboard, force the two main URLs in wp-config.php:

define( 'WP_HOME', 'https://yournewdomain.com' );
define( 'WP_SITEURL', 'https://yournewdomain.com' );

That gets the site loading, but it does not fix URLs saved inside posts, widgets, and options. For those you need a proper search-replace across the whole database.

Do Not Run a Naive SQL Find-and-Replace

The obvious move, a raw UPDATE ... REPLACE() query in phpMyAdmin, will corrupt your site. WordPress stores a lot of settings as PHP serialized data, where the string length is recorded alongside the text. A blind find-and-replace changes the text but not the recorded length, and WordPress then silently drops that data (broken widgets, theme options, and page builders are the usual casualties). Always use a serialization-aware tool.

  1. Best option: install the free Better Search Replace plugin in wp-admin. Enter the old URL and new URL, tick all tables, run a dry run first, then run it for real. It handles serialized data correctly.
  2. Command-line option: if you are comfortable with WP-CLI, wp search-replace 'https://old.com' 'https://new.com' is serialization-safe by default.
  3. After the replace, go to Settings > General and confirm the WordPress Address and Site Address both show the new domain, then remove the temporary WP_HOME / WP_SITEURL lines from wp-config.php if you added them.

07. Test Before You Point DNS

This is the trick that separates a clean migration from a stressful one. You can load the migrated site on our server, in your own browser, before the rest of the world sees it. That way you fix everything while the live site is still happily serving from the old host.

Option A: Edit Your Hosts File

Your computer's hosts file lets you tell just your machine to resolve the domain to our server's IP, without changing public DNS. Find our server IP in your cPanel (the Shared IP Address in the right sidebar), then add a line:

203.0.113.10   yournewdomain.com   www.yournewdomain.com
  1. On Windows, edit C:\Windows\System32\drivers\etc\hosts as Administrator. On macOS or Linux, edit /etc/hosts with sudo.
  2. Add the line above with our real server IP and your domain, then save.
  3. Load https://yournewdomain.com in your browser. You are now seeing the copy on our server while everyone else still sees the old host.
  4. Click around, check pages, images, and the dashboard. When everything looks right, remove the hosts line and proceed to DNS.

Option B: Preview URL

If editing the hosts file is not practical, you can browse the site through a temporary path or a testing subdomain on your account. Because WordPress rewrites internal links to the real domain, a preview URL is less faithful than the hosts-file method, so use it for a rough look and the hosts file for the real verification.

Tip

The hosts-file method is also how you test a domain-change migration end to end. With the hosts entry active and the search-replace done, the site behaves exactly as it will once DNS flips, so you catch mixed content and broken links before any visitor does.

08. Point DNS to Ultra Web Hosting

Once the site checks out on our server, it is time to send traffic here. There are two ways, depending on where your domain's DNS is managed.

  1. Nameserver change (cleanest): at your domain registrar, set the nameservers to ns1.ultranameservers.com, ns2.ultranameservers.com, and ns3.ultranameservers.com. We then serve the whole DNS zone and everything points here automatically.
  2. A record change (surgical): if you need to keep DNS at your current provider (for example email or a CDN sits elsewhere), just change the domain's A record to our server's Shared IP, and the www record to match. Leave the MX and other records alone.
Give It Time to Propagate

DNS changes are not instant. Depending on the old record's TTL, some visitors may still hit the old host for a few hours (occasionally up to 48). This is exactly why you keep the old account live until propagation finishes. For the full explanation, see DNS Changed But Site Not Showing.

Lower the TTL First

If you can plan ahead, drop the domain's A record TTL to 300 seconds a day or two before the move. Propagation then completes in minutes instead of hours when you flip the record. This only helps for the A record method, not a nameserver change.

09. Permalinks, .htaccess, and File Permissions

Three small things break sites right after a move, and all three are quick to fix.

Flush Permalinks

If your posts and pages return 404 errors even though the home page loads, the rewrite rules did not carry over. In wp-admin, go to Settings > Permalinks and click Save Changes without changing anything. That regenerates the rules and rewrites .htaccess.

Check .htaccess

The .htaccess file in the site root controls WordPress rewrites and any custom rules. If it did not come across, re-saving permalinks (above) recreates the WordPress block. A clean default looks like this:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Fix File Permissions

Files copied over FTP sometimes arrive with the wrong permissions. The safe standard for WordPress is directories at 755 and files at 644, with wp-config.php at 644 or tighter. You can bulk-fix these in the cPanel File Manager (Select All, then Permissions) or over SSH.

10. Post-Migration Checklist and Troubleshooting

Run through this list once DNS has propagated and the site is live on our server.

  1. SSL and AutoSSL: confirm the site loads over https with a valid certificate. Our AutoSSL issues one automatically once the domain resolves here, usually within an hour or two of DNS pointing at us.
  2. Mixed content: if the padlock is missing or the browser warns of insecure content, some assets are still loading over http. Fix it as described in How to Fix Mixed Content Warnings After Installing SSL.
  3. Caching: clear any caching plugin and your browser cache, and re-check. Stale caches hide successful changes and cause phantom problems.
  4. Plugins: confirm your plugins are active and reactivate any that dropped. Re-enter license keys for premium plugins if prompted.
  5. Forms and email: submit a test contact form and confirm the notification arrives. Email deliverability from a new server is a common miss, so test it deliberately.
  6. Performance: once everything works, tune it with How to Optimize WordPress Performance.

White screen of death. A blank page usually means a PHP error, often a memory limit or a plugin incompatible with the PHP version here. Match the old PHP version first (Section 02), then temporarily rename the plugins folder over FTP to disable all plugins and see if the site returns. Enable WP_DEBUG in wp-config.php to read the actual error.

Error establishing a database connection. The credentials in wp-config.php do not match. Recheck DB_NAME, DB_USER, and DB_PASSWORD against what cPanel created, remember the account-name prefix, confirm the user is attached to the database with all privileges, and make sure DB_HOST is localhost.

Missing images or broken media. Either the uploads folder did not fully transfer, or the URLs still point at the old domain. Confirm the files exist in wp-content/uploads, then run the serialization-safe search-replace from Section 06 to fix the URLs.

Redirect loop (too many redirects). Usually a mismatch between the site URL scheme and reality, a leftover redirect rule in .htaccess, or a conflict between a forced-https rule and a caching or security plugin. Confirm WP_HOME and WP_SITEURL both use https, and comment out any custom redirect lines in .htaccess to isolate the cause.

Want Us to Handle the Migration?

If you would rather not touch FTP and phpMyAdmin, our team can move your WordPress site for you. Send us access to the old host and the domain, and we will copy the files and database, test the site on our server, and coordinate the DNS cutover so there is no downtime.

Open a Support Ticket

Quick Recap: WordPress Migration in Six Steps

If you only remember six things from this guide, remember these:

  1. Back up the source site in full, files and database, before touching anything.
  2. Create the destination account plus an empty database and user here, and write down the prefixed names.
  3. Copy the files and database with a migration plugin for most sites, or by hand for large or broken ones.
  4. Fix wp-config.php and the site URL, using a serialization-safe search-replace if the domain changes.
  5. Test on our server with a hosts-file edit before you point any DNS.
  6. Flip DNS, then work the post-migration checklist: SSL, mixed content, caching, plugins, forms, and permalinks.

Last updated July 2026 · Browse all WordPress articles

  • 0 Users Found This Useful

Was this answer helpful?

Related Articles

The WordPress app doesn't work with my website

WordPress | Updated 2026 If the WordPress mobile app (for iOS or Android) cannot connect to...

How to Recover from a functions php Fatal Error in WordPress

WordPress | Updated July 2026 You pasted a code snippet into your theme's functions.php from...

How to Move a Weebly Site to WordPress

WordPress | Updated July 2026 There is no automatic importer that turns a Weebly site into a...

WordPress error "This file cannot be imported - It may be caused by file_uploads being disabled in your php ini"

WordPress | Updated March 2026 The "This file cannot be imported" error in WordPress appears...

WordPress Response Body Too Large and Too Many Arguments Errors

WordPress | Updated March 2026 The "Response Body Too Large" and "Too Many Arguments in...



Save 30% on web hosting - Use coupon code Hosting30