Moving a website to a new host without breaking anything or causing any downtime can be daunting.
After all, you certainly don’t want to lose your Google rankings, especially if this is your first time doing such a move. Rest assured, there’s always a safe route to take and today we’re going to pave the way for you.
In this tutorial, we’ll focus on a universal method suitable for all types of website migration, regardless if you’re using WordPress, Joomla, or Drupal.
Key Takeaways
- Check if your new host offers free migrations to save yourself time and potential trouble.
- Many hosts offer one free migration per sign up, so check for this on your next new host sign up.
- Make a backup before you start a migration process and/or acquire professional migration services.
- Once you’ve completed the move, thoroughly check your website on the new host to confirm everything functions properly.
📚 Table of contents:
- How to move a website to a new host
- Add your domain name at your new host
- Move your site’s files using FTP
- Export your site’s database from your old host
- Create a new database and import it to your new host
- Update configuration details if needed
- Test your site
- Move custom email addresses
- Update your domain’s nameservers
- Test everything again
But first – does your new web host offer free migrations?
Before you start down the manual road of how to move a website to a new host, we’d encourage you to check whether your new host offers a free migration service (or an affordable paid service).
Many hosts will migrate at least one website for free when you sign up. If you’re moving from one cPanel host to another cPanel host, it’s also usually pretty easy for your host’s support staff to migrate your entire cPanel account, which means you’ll be able to bring everything over in one step.
If you’re still undecided on which host to switch to, some quality and affordable hosts that offer free migration services include:
You’ll also find other hosts that offer professional migration services for an affordable price. Some good options here are:
- SiteGround – as low as $30/site for professional migrations (or free WordPress migrations using SiteGround’s automated tool).
- Bluehost – $149.99 to professionally migrate up to five websites.
- DreamHost – $99 to migrate any type of website (or free WordPress migrations using DreamHost’s automated tool).
If you can swing it, paying for someone else to do the work for you can save you a lot of aggravation, especially if you’re not a technical user.
And if you’re using WordPress and still reading this article, most premium managed WordPress hosts also offer free WordPress migrations. Good options here are:
How to move a website to a new host – step-by-step
If you’re set on manually migrating your site to a new host, here’s a bird’s eye view of the steps that you’ll take in this tutorial.
Before getting started, we recommend taking a full backup of your site using whichever method is available. While this process shouldn’t break anything, it’s always good to have a recent backup in hand when making any major changes to your site.
💡 Remember – if you’re using WordPress, follow our dedicated WordPress migration guide instead. It’s simpler and tailored to WordPress, whereas the method below is a generic approach that will work for virtually any type of website, but is more complicated than it needs to be for WordPress sites.
1. Add your domain name at your new host
Before you can start moving your site, you need to sign up for your new host and add your site.
If you only have one site, you probably entered your domain name already when you signed up for your host. However, if you have multiple sites, you might need to create an Addon Domain instead *:
* Addon domains are what cPanel calls additional domain names – your host might use different terminology if it doesn’t use cPanel.2. Move your site’s files using FTP
Next, you need to move all of your site’s files to your new host. This might take some time if you have a large site, but you’ll only need to put in a few seconds of manual effort – the rest is just waiting.
The easiest way to move your site’s files is via FTP. To connect via FTP, you’ll need an FTP program – FileZilla is a good free option if you’re not sure where to start, but there are lots of good FTP clients.
💡 Confused by FTP? Check out this full guide to FTP to learn the basics
In addition to your FTP program, you’ll also need the FTP credentials (host, username, password, port) from both your old host and your new host. You should be able to find these in your hosting dashboard, but you can ask your host’s support staff for help if needed.
Once you have that information, open two windows for your FTP program:
- Window 1 – connect to your existing host using your FTP credentials.
- Window 2 – connect to your new host using your FTP credentials.
In both windows, browse to your site’s main folder:
- Window 1 – you should see all of your site’s files.
- Window 2 – this should be mostly empty, though you might see a few files from your host.
Select all of the files in Window 1 (old host) and download them to your local computer:
Some FTP programs will let you drag files directly between the two windows, but FileZilla doesn’t currently support this feature. If you’re using a different FTP program, you can check to see if it will let you move files directly.
Once the download finishes, upload all of those files using Window 2 (your new host). You can just drag-and-drop all of the files from your computer into the FileZilla interface.
For a large site, it might take a good bit of time to both download and upload all of the files, so you might want to step away and do something else while you wait.
3. Export your site’s database from your existing host
There are two parts to most websites:
- Your site’s files, which you moved in the previous step.
- Your site’s database, which usually contains all of your site’s content and settings.
If you just have a static HTML website, you don’t need to move your database because your site doesn’t have a database.
However, most content management systems (CMS) rely on a database to store your content. This includes:
- WordPress, Joomla, Drupal, Magento, etc.
To move your database, you’ll first need to export your database from your existing host. Then, you’ll import it to your new host in the next step.
To export your database, you can use phpMyAdmin, which is a database admin tool that most hosts offer. If your current host uses cPanel, you should see a phpMyAdmin tool in the Databases section.
Once you open phpMyAdmin, you’ll need to select the database for the site that you want to move on the left (you’ll see multiple databases if you host multiple sites).
Then:
- Go to the Export tab
- Select Quick for the Export method
- Choose SQL for the format
- Click Go to export your database
4. Import your site’s database to your new host
Once you’ve exported your site’s database from your old host, you need to reverse the process and import it to your new host.
Before you can do that, you need to create a new, empty database at your new host. If your host uses cPanel, you can do that by opening the MySQL Database Wizard tool under the Databases section in cPanel.
While going through the wizard, you’ll be prompted to enter a:
- Database name
- Database username
- Password for your database username
If possible, try to use the exact same database name, username, and password as your old host. This will eliminate the need to update configuration settings. If you don’t remember those details, that’s ok – you’ll just need to update configuration files in the next step.
Once you create your database username, you’ll need to give it all privileges on the next screen:
After creating your new database, open phpMyAdmin at your new host and select the database that you just created using the sidebar on the left.
Then:
- Go to the Import tab
- Use the File to import section to select the .sql.zip file that you exported in the previous step
- Click Go to import your database
Ideally, you’ll be finished now. However, some CMS tools use database serialization which can cause issues when you export/import your database like this. WordPress is one example where it’s common to encounter database serialization issues.
Unfortunately, we can’t give one blanket recommendation for all platforms here because it depends on the platform (and you might not even experience any problems).
If you experience issues, you can usually use Google to find scripts that can help you fix the problem for your specific platform. For example, here’s a popular script that can fix WordPress database serialization issues.
5. Update any necessary configuration details (depends on CMS)
Again, it’s hard to give specific instructions here because this step will depend on your CMS and how it’s configured.
However, at this point, you might need to update some configuration details in your site’s configuration files or settings to point to the new database that you created (especially if you used a different database name, username, or password).
Here are tutorials for how to update this information for some of the most popular CMS tools:
If you’re using a different website platform, you might need to turn to Google to figure out how your platform handles configuration files.
6. Test your site
At this point, your site should be working on your new host. However, you’ll want to thoroughly test it to make sure it is.
You can’t do this by entering your site’s domain name because your domain name still points to your old host (for now). This is necessary to ensure that you don’t have any downtime during the move.
There are two ways to get around this:
Option 1: Use a temporary URL
Most web hosts give you an option to view your website on a temporary URL before switching domain names.
This temporary URL typically looks something like this:
https://[cpanel_ip_address]/[cpanel_username]/[domain.com]
For example:
http://171.654.321.000/~colin12/wpshout.com/
If you’re not sure where to find this temporary URL, we’d recommend asking your new host’s support for help.
Option 2: Edit your computer’s hosts file
Another option to test your site is to edit your computer’s hosts
file to point to your new server. This lets you manually override your computer to tell it to use your new server when you enter yoursite.com
(all of your other visitors will still be taken to your existing host for now, though).
First, you’ll need your server’s IP address, which you can find in cPanel (or, your host usually includes this in your welcome email):
Then, you’ll need to edit your hosts
file:
You can find the hosts
file in C:\Windows\System32\drivers\etc
. It may be hidden, so you might want to adjust the file display settings to see it.
The hosts
file has no extension but it’s in plain text format, which means that you can open it with Notepad or any other text editor (just right-click and tell Windows to open it with Notepad).
At the very end of this file add a new line like this:
YOUR.SERVER.IP.ADDRESS YOURDOMAIN.com
For example:
10.21.11.192 YOURDOMAIN.com
Save the file.
To get started, open the Terminal app – you can find it via App Launcher.
In Terminal, type in sudo nano /etc/hosts
and hit enter.
Then, enter your admin password and hit enter.
You should now be in the Nano text editor with your hosts
file open.
Position the cursor at the bottom using the arrow keys.
Add a new line at the very end of the file:
YOUR.SERVER.IP.ADDRESS YOURDOMAIN.com
For example:
10.21.11.192 YOURDOMAIN.com
Once you’ve added the line, hold down the “Control” and “O” keys to save the file. Then, hold down “Control” and “X” to exit.
After editing your hosts
file, you should now see the new version of your site when you browse to your domain name.
Once you’ve verified that your new site works properly, you’re almost finished – just two more steps.
7. Move your email addresses (optional)
If you’re using email hosting from your old host to create a custom email address – e.g. james@jamesphotography.com
– you’ll also want to set up this email address at your new host before you make the switch.
Otherwise, you won’t be able to receive emails once you update your domain name in the next step.
If you’re using email hosting from your host, you can do this by recreating your custom email addresses at your new host via cPanel:
If you’re using a separate email hosting service (such as G Suite), you might need to change the MX records in the DNS settings at your new host once you point your domain name to that new host in the next step.
8. Update your domain name to point to your new host
Once you’ve verified that the migrated version of your website is working properly, the final step in how to move a website to a new host is to update your domain name to point to that new host.
When you make the update, visitors will be taken to the new version of your site at your new host, with no downtime.
Typically, you’ll do this by changing your domain’s nameservers, which you can control from the service where you purchased your domain name.
First, you’ll need to locate the nameservers for your new web host. You can usually find these in your hosting dashboard or welcome email. Or, you can ask your new host’s support staff for help.
Your nameservers will look something like this (but unique for each host):
ns1.yourhost.com
ns2.yourhost.com
Most hosts provide two nameservers, but some will give you three or four different nameservers.
Once you have your nameservers, here are some tutorials for editing nameservers at popular domain registrars:
For example, here’s what it looks like to edit a domain’s nameservers with Namecheap:
9. Test everything again
Now, you’ll need to wait for a little for the change that you made to your nameservers to take effect. This can take up to 24 hours, but normally it’ll only take 30-60 minutes.
Once the change takes effect, you should be able to access the version of your site at your new host when you go to your domain name.
Take another moment to make sure that everything is working:
- Browse around to different pages
- Test your forms
- Make sure you can receive emails (if using custom email addresses)
- Etc.
If everything is still working, you’re officially finished – that’s how to move a website to a new host without any downtime!
Have questions about how to move a website to a new host? Ask away in the comments and we’ll try to help!
…
Don’t forget to join our crash course on speeding up your WordPress site. Learn more below:
Layout and presentation by Karol K.
Thanks dude, very helpful!