There may come a day when you need to switch domains. It might be that the brand name you chose years ago doesn’t properly explain what your unique selling proposition is anymore.
Or maybe you are transitioning from a branded domain to a personal domain. Or vice versa.
Whatever the case, if you are going to do it yourself (which is completely possible), you’re going to want a step-by-step guide to follow.
Corbett has transferred WordPress to different domains multiple times over the past few years. I just went through this whole process last weekend for the first time and had my fair share of opening up Google and starting my search with “how in the world do I…”
There were also a number of things that completely broke for me in an embarrassing way (like sending 10 emails in a row of old blog posts that I didn’t want sent to my entire email list).
But in general, moving WordPress to a new domain can be pretty seamless with a little planning. If you have a strong reason to rebrand or move domains, this post will help.
This guide will help you manually transfer your domain and fix many of the problems that may arise from doing so.
(Quick note: Transferring your domain manually can be tricky. If you are worried about messing things up or that you don’t have the technical skills to do it, we recommend that you use the WordPress plugin BackupBuddy, which automates much of this process. Keep in mind that the steps below about podcasting and your email list will still need to be addressed even if you use BackupBuddy to do the transfer.)
Alright, let’s get into it.
1. Backup WordPress Databases
The first step is to backup the WordPress database on your original domain (henceforth referred to as the “old” domain). Note that backing up your database doesn’t completely backup your theme, widgets, plugins, etc. Those will be handled separately.
(If you want to back up your entire WordPress install, including what I just mentioned, your best option is to use BackupBuddy. Heck, you should be using the plugin for backups on a regular basis anyway, even if you aren’t transferring domains.)
If you are merging two WordPress installs together you’ll want to backup both of the WordPress databases. If the install on the new domain is a fresh WordPress install though, you won’t need to worry about it.
If you don’t have BackupBuddy there are a bunch of free WordPress plugins that allow you to backup/download your WordPress database. This one worked for me.
Save a copy locally, save a copy in the cloud, and save a copy on a old AOL floppy disk from the 90’s. You don’t want to be without your database.
2. Export & Import Content
The next step is to export your posts and pages from your old domain. To do so, log in to your WordPress admin panel and go to Tools > Export.
From there make sure “all content” is selected and then export the data.
Now go to the new WordPress install and go to Tools > Import. From there you can import all the content from your previous domain. Just select the export file you created from your old site.
3. Migrate wp-content/uploads via FTP
Next you’ll need to manually transfer your WordPress uploads folder via FTP from your old domain to your new one. This folder contains all the images and other files in your blog posts that you uploaded using the WordPress interface.
This step isn’t too hard. First, log into the FTP of your website using your favorite FTP program. (I use Transmit on the Mac.)
Navigate to root folder of your domain and copy the wp-content/uploads folder onto your computer. Now transfer the uploads folder to the same place on the new domain.
(Note: You’ll have to “merge” the two folders if you have existing uploads on the new domain. If it’s a fresh WordPress install, you can just replace the entire uploads folder.)
4. Re-Install & Configure Theme
This is another step where it really helps to use BackupBuddy.
Because I like to do things the hard and manual way… I had to reinstall my WordPress theme, Thesis, and manually copy over all of the custom code I’d put together. Specifically the custom.css and custom_functions.php files.
I also had to manually update the site options (which included font scripts, Google Analytics code, etc.) and the design options (font sizes, column widths, etc.).
It is an extremely manual process to have both of the WordPress installs open and copy+paste HEX values for font colors.
Your mileage may vary here. Some themes have an “export options” button that will make this process somewhat easier. Consult your theme documentation for further instructions.
5. Reinstall & Configure Plugins
Plugins are another part of the WordPress install that don’t get transferred over with the Export & Import process described so far.
Not only will you need to search, find, and reinstall all of the plugins, but you’ll also have to reconfigure them. Depending on how many plugins you use this may take a while.
The easiest way to do this is by having windows of both the old and new domains open at the same time and going through all the settings at the same.
6. Update Widgets
Any sidebar or footer widgets in your WordPress install will not be present on the new domain. You’ll be manually replacing links to old domain pages, images, and files here.
Open your old domain’s WordPress panel and navigate to Appearance > Widgets. Then manually copy + paste all of your text widgets or recreate the widgets.
7. Search And Replace Your Domain Name
Now we’re getting into the good stuff. To make sure all of the links within your site will go to the new domain instead of the old domain, install the Search And Replace plugin. I used version 2.6.5.
Once you have this plugin installed, all you have to do is a search and replace of your old domain name with your new one.
For example, I was transitioning from pocketchanged.com to calebwojcik.com so I just did a simple search and replace to change ‘pocketchanged’ to ‘calebwojcik’.
Boom. Simple as that. Be careful with this step. Having a backup is critical here, because this search and replace is very powerful since it works directly on your database. Double check your spelling before proceeding, and consider any repercussions that could result from a mass search and replace operation.
8. Update All Shortlinks
If you use a plugin like Pretty Link to create shortlinks to specific URL’s then you’ll have to re-create those manually as well.
9. Update Podcast Episodes
When you do a search and replace on your website there may be URL’s you don’t want changed. For me, that was the URL’s to my podcast episodes hosted on Libsyn.
I went to each episode’s blog post and manually changed the link back to the MP3 to the proper URL.
10. Update Feedburner
If you are using Feedburner (or Feedblitz) for an RSS feed you’ll need to update it as well.
The main place you’ll need to make changes is in the Feed settings. Update the “original feed” to your new domain name.
It is up to you whether you want to update the “Feed Address” though, because if you do then your previous feed will no longer work (i.e. people will have to resubscribe via RSS).
You’ll also want to go through the rest of your Feed’s settings to change any mentions of your old domain or brand to the new one.
11. Update Email List & “Blog Broadcast”
Inside your email list provider there will be plenty of things to update.
You’ll want to update the names of your lists (which might break your opt-in forms, so make sure to test them). You’ll also need to update any mentions of the old brand, old email address, etc.
Now for the biggest mistake I made during my domain transfer.
I left the “blog broadcast” setting to automatic in Aweber and a day after my feed updated Aweber blasted ten emails out to my list. By the time I heard from Aweber it was too late.
What happened was that Aweber pulled ten random posts from my archives (some from over a year ago) and decided to send all of them out, at once, via email. What a nightmare.
To make sure this doesn’t happen you to, change your blog broadcasts to manual during your domain transfer.
12. Create a 301 Re-Direct
Okay, so if you’ve made it this far, well done. This is a long process.
This step is the most important one because this is what will actually cause people that visit your old domain to be redirected to your new domain. And not just the homepage, but every individual blog post and page too.
To do this step you’ll need access to the FTP of your old domain again.
A) In the root directory you should find a file named ht.access. (If you don’t, just make one in a text editor and upload it to the root folder of the old domain.)
B) Open that file in a text editor (TextEdit on Mac or Notepad on Windows).
C) Add a 301 re-direct to ht.access file right after the “RewriteEngine On” line that reads:
Redirect 301 / http://newdomain.com/
Here is the full text in my ht.access file at my old domain as an example:
BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On Redirect 301 / http://calebwojcik.com/ RewriteBase / RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] END WordPress
This will now redirect all traffic from your old domain to your new one. Again, test to make sure it is working.
13. Submit XML Sitemap to Google
Okay, here’s the last important step. Search engines need to know that you transferred domains and where all of your content now lives. The best way to do this so you don’t lose any SEO is to generate and submit your XML sitemap and submit it to Google.
To do this, all you need to do is install the Google Sitemap XML plugin, go to Settings > XML Sitemap, and then submit your sitemap to Google.
14. Test, Test, Test
Pour yourself a caffeinated beverage and start clicking around your new domain.
Test the major pages of your site to make sure they all work. Then go through your most recent blog posts, the sidebar, the footer, and anything else you think might have broken. It is better that you find the problems and fix them yourself than to have someone in your audience find them.
Additional Resources:
I referenced a bunch of other guides online to figure out how to do this on my own. Hopefully this guide covered all of the steps in plenty of detail for you, but if not, here are a few of them.
- WordPress.org’s Guide to Moving WordPress
- WordPress.org’s Guide to Changing The Site URL
- Yoast Guide to Moving Domains (from 2008)
And once again, if you’re doing this on your own, you really should consider using the BackupBuddy plugin. It has a migration tool built-in that will automate steps 1 through 8 above for you and will save you a bunch of time and potential errors.
Have you migrated domains before? Have any tips or potential pitfalls to share? Would you change any of the steps above? Let us know in the comments below.
Learn how to set goals that actually stick!
The Top 10 Mistakes in Online Business
Every week we talk with entrepreneurs. We talk about what’s working and what isn’t. We talk about successes and failures. We spend time with complete newbies, seasoned veterans, and everything in between.
One topic that comes up over and over again with both groups is mistakes made in starting businesses. Newbies love to learn about mistakes so they can avoid them. Veterans love to talk about what they wish they had known when starting out.
These conversations have been fascinating, so we compiled a list of the 10 mistakes we hear most often into a nifty lil' guide. Get the 10 Most Common Mistakes in Starting an Online Business here »
This is awesome! My team and I were just talking about needing to migrate everything to a new domain yesterday, and I was tasked with figuring it out. Needless to say, this helps A LOT. Thanks for the post :)
Great post.
I would add four points to make this even more comprehensive:
1. Inform Google that you’re moving domain via Webmaster Tools (www.google.com/webmasters/tools/)
2. Re-evaluate the plug-ins you’re using. Some plug-ins stop being supported by their creators and some new plug-ins may be created that better fit your needs.
3. Test the speed of the website. If you’re moving to a shared hosting you are going to share resources with other websites – and there is a risk of being placed in a “bad neighborhood”. I use website speed test by Pingdom (http://tools.pingdom.com/)
4. Closely monitor Google Analytics for 404 (Page not Found) errors. People may have linked to your old domain and the redirection is not working sending users to an error page.
Imants
And if this melted your brain, hire someone :)
Ha! Exactly. It really is a manual process and takes a ton of work, even with a plugin that helps you out.
Caleb, THANK YOU, THANK YOU, THANK YOU! (Did I mention thank you?) This could not have been more timely because I am considering moving my blog to a new domain name. This is a fantastic post that’s extremely helpful. Thanks for taking the time to put it together.
Wow, plenty of steps but good info indeed. Save it first as I never know I might need it one day. Thanks for sharing!
No problem Jason. :)
Thanks for the post Caleb. It was very timely for us as we just re-branded our company and will set up 301 redirect very soon.
A lot of these steps are good but I was able to move my domain with less work following this guide and using the Duplicator plugin-
http://optimwise.com/copy-migrate-wordpress-sites-with-the-duplicator-plugin/
Didn’t need to re-install any plugins, just re-submit my sitemap pretty much. It even maintained my links through the Pretty Link plugin!
Great share John. That sounds like a simpler solution than doing it all manually like I did.
I have been using Duplicator for WordPress, and blogged about it: http://www.bgsoftfactory.net/5-simple-steps-to-move-a-wordpress-website/
It may not do absolutly everything, but at least it remove many manual steps, wich save time and lower errors propability. It can also be used as a backup, even if it’s not the intended goal for this nice plugin. As they say, your mileage may vary, but it has been great for me.
Hey Caleb, now I know why I received 10 emails from you at once! LOL
Anyway, I actually migrated a few sites just this past weekend (I never did it before) and came up with what I think was a very simple solution that doesn’t involves plugins, money or wordpress reinstalling and you get to have every single thing exactly as it was before (with all plugins both free and paid working properly):
1. Export database inside PHPMyAdmin
2. Download website files using FTP
3. Create new database on new host
4. Import database to new host
5. Edit wp-config.php file with new database settings
6. Upload website files using FTP
That’s it! Although this doesn’t involves a change in the URL or domain name, this is just when you are “moving” your site to another host.
Cheers,
Sergio
Great walkthrough on migrating sites. Sounds like that is a bit cleaner and more straight-forward than a domain transfer.
Thanks for sharing.
I’ve done this also. You can do a search and replace within PHPMyAdmin to change urls.
I have been putting off switching hosts for too long. I have bookmarked this so I know where to go when I finally decide to take the time to do it. Scary!
Thanks also to the commenters for their suggestions. I will be checking them all out.
Definitely use Backup Buddy when you do so. Will save a ton of hassle.
I think I can handle this with the detailed instructions. Still seems pretty scary. Thanks for the information and all of the helpful comments from readers.
Caleb,
I just spent a whole week converting both my CMSs into one wordpress platform. I had to do all of these steps even though I wasn’t moving domains, just combining content. It sucked to say the least. However, I’m happy that all my content is now under one roof that’s easy to manage.
Your part about grabbing a caffeinated beverage and going through your site, that’s what I’m doing now. There is not enough coffee or motivational tapes to get me through this, but it MUST be done.
Let me know if you take a hit, traffic-wise. I think I’m gonna suffer this month until Google reindexes my site.
Good work!
Great idea for a follow-up on the SEO implications. And yes, there is not enough caffeine in the world to get you to check all the links on a site to make sure they work…
Luckily there is a plugin to help with broken links: http://wordpress.org/plugins/broken-link-checker/
Thank you for turning me on to that plugin. Saved me a ton of time :-)
I chose .ca domain (don’t want it anymore) and would like a different name for my site (didn’t come up with a better one yet).
Thanks for sharing this, Caleb. I’ve been wondering at the back of my mind how to do it. I don’t feel like doing all this right now but will need soon.
I wonder how the switch impacts google ranking?! I don’t want to lose what I’ve built so far.
If you do a domain transfer with a proper 301 redirect and then submit the new XML sitemap to search engines like Google, you might lose a bit of ranking for the first week, but it should be right back to where it was before shortly.
Not my plugin, but I have used it plenty, its free, and it makes it extremely easy to transfer to a new domain. Its called duplicator and can be found here: http://wordpress.org/plugins/duplicator/
I really struggled with this before but learnt over a few domains I now do it when I build a new site I usually start builing it on my local machine and then migrate it to the web host, here’s the steps I use, no plugins required, transfers everything. You can even use this to maintain multiple different versions of your site
1) Using SQLAdmin export database to a .sql file
2) If you’re changing domain name open the .sql in a text editor and search replace old domain for new
3) Zip up contents of public_html directory
4) Create a new database and db user with full permisions on new webhost
5) Import .sql file into new database
6) ftp the zipped public_html to webhost and extract contents into public_html
7) Edit public_html/wpconfig.php to point to new database with new user / password
That’s it, if you use much custom code its really handy to have a local copy of you site on your machine which you can tinker with and break and fix without affecting your live site.
If you do want a local copy use Xampp on windows and edit your C:windowssystem32driversetchosts file add two entries of:
127.0.0.1 yourdomain.com
127.0.0.1 http://www.yourdomain.com
This allows you to enter your domain in a browser and send the request to your machine, just comment the lines out with a # if you need access to your live site.
For that 2nd hosts entry don’t include the “http://” – it got added automatically by wordpress comment formating ;-)
Or you can use something like managewp.com to clone your site to a new domain and then delete the old one (i’m not associated, just a customer).
Thanks for the ht.access (NB. the file name should be .htaccess for it to work) script. I was about to Google it for a friend who is moving a client site when your email of this post arrived. And a couple of steps I would definitely have missed (eg AWeber). Great Checklist!
I, too, recently migrated a WordPress site to a new domain and changed the permalink structure. Two recommendations I might make:
(1) Be careful with search and replace in databases. I prefer interconnect’s script over a plugin (just remember to delete after use!). http://interconnectit.com/products/search-and-replace-for-wordpress-databases/
(2) When you’re all finished check the media upload directory setting (under “media” in “settings”) and ensure it is pointing to the new domain and right directory. Mine wasn’t.
Oh! Caleb! *Raises hand frantically* I gots a question. After I migrate to a different domain name and redirect traffic from users that goes from the old domain name to the new one, what would happen to the PR of the old and the new?
Also, if after doing all this redirecting traffic and stuff, do I still need to pay for the old domain name?
Thanks for the information Caleb. I’ll have to bookmark this one for when that time comes.
Even though you did a lot of the process manually, it’s really best to learn how to do it that way before you go the automatic route.
Because if something goes wrong, and you didn’t learn how to do it manually, it can be a real pain to figure it out.
Thanks again.
Here’s a great resource to aide your move to another domain –
http://interconnectit.com/products/search-and-replace-for-wordpress-databases/
Can actually say have used it before and it was really helpful. However, make sure you follow the instructions fully.
This is an amazing guide, and would definitely help somebody who has to migrate a site in a pinch do so without bombing their database and installs to hell.
Thank you Caleb!
Oh no! I mean – this is great, but it dropped into my inbox literally 24 hours too late! I’ve just moved my site and had to find out about most of the above through Google searches and YouTube videos. I wish I’d had this all in the one place to refer to.
Nevermind, I picked up some extra tips here (I’m still tweaking my new site) so thanks!
Wow, what a fantastic and comprehensive guide! Thank you very much for sharing :)
Regards,
Laura
That was pretty quick.
Thanks for the tutorial, could you recommend something if I wanna move from WordPress to Joomla.
Thanks for the info. I have made some domain name choices that I may regret in the future. If this happens, I’ll definitely read through these tips again.
Thank you so much for this post! I have been having so much trouble with my host who put my wordpress site on the wrong domain and I was finding it was an impossible task to move everything to a new hosting account on the right domain. The backup buddy is perfect and a worked a treat! Thank again.
Just switched domains on one of my main niche sites and damn this was easier than I thought. The hardest and longest part was resetting all the damn plugins. Other than that it was easy. Thanks ;-)
Once the move is done, when is it ok to delete all the old WP files of the original blog and when can I completely delete the old original domain?
The old domain is going to expire soon so just want to know if I need it or not. Thanks.
Before you delete anything, make sure you make a backup first :)
If the redirects are being handled by a .htaccess file, and not by WordPress, you should be able to remove WordPress anytime. However, you should keep the old domain with the .htaccess file in place for as long as you want the redirects to continue functioning.
Hey Guys
I bought the 301 redirect in my WP.com blog, darrenstehle.com, and have directed the site to eatmovebe.com.
A while ago I imported all of my posts, but here is the current issue: if you were to click on the following link, http://darrenstehle….ok-08-may-2013/
it goes to eatmovebe.com, but it can’t find the post, which is now a permalink, http://eatmovebe.com…ok-08-may-2013/
So, what can I do to map the links from darrenstehle.com to EatMoveBe, less the date in the URL?
Thanks
PS. I also posted this on the Fizzle Forum at:
http://fizzle.co/forums/index.php?/topic/5380-how-do-i-export-import-my-blog/
Just seeing this now, but it looks like you got an answer on the Fizzle forums. :)
Hi everyone,
Just an issue I had while transferring my site and how I overcame it.
I was transferring everything to my new domain, authosites.com. I followed the instructions listed here exactly.
I definitely imported all of my uploads to my new host and domain. However, none of my featured images were showing up on my posts. After further investigation I discovered that my media library was empty.
In order to get my images back into my media library I used this plugin http://wordpress.org/plugins/add-from-server/ to import the images from my uploads folder.
Then I had to reassign all of my images. Some extra work unfortunately, but in case anyone ran/runs into this issue I thought I would share!
Hi,
I’ve seen several plugins like Duplicator that can help you migrate from server to server.
I’ve also developed another plugin for this, it’s a complete solution:
http://codecanyon.net/item/wp-golive/7793291?ref=RedhopIT
GoLive plugin has a lot of features:
Automatically Export the Database from Source Server
Transfering the files via FTP automatically
Auto-import Database in Remote/destination server.
Update .Htaccess properly
Update wp-config.php file on destination server with the new credentials.
Replace the URLs in Database (Posts, Pages, Menus…), and keep auto-update serialized objects too.
I hope it helps someone.
Regards,
Thanks for this post. Its has solved my problem.
Regards
Pagerank Update
Live Bangla News
thanks buddy it really helped me… i moved my website to http://phonespeco.com
This is a very long process. You can try another method to move WordPress to another domain. I can move a website within 3-5 munites.
More details here