Over that last couple of days, I have had the “pleasure” of moving a blog from one hosting provider to another (not that difficult of a task) but ALSO changing domains in the process. While I don’t think this post should the definitive set of instructions, it is a combination of information that I read and gathered, in conjunction with my own experience.
I actually did this migration a couple of times, not by choice mind you. But the process of doing this multiple times aided me in coming up with the steps that follow. The steps worked for me and were based on trial & error and research.
First off – WARNING – this is tricky for some and very easy to screw up. Don’t come crying to me if you mess something up beyond repair. I’m not a PHP or mySQL guy, I just play one on TV (essentially know enough to be dangerous). I will help where I can but I too had to do a lot of research, reading and trial and error before I got it to work.
Just for reference, I moved my blog from http://weblog.techdad.net to https://www.hightechdad.com.
There is a bit of work that you need to do for this so I recommend that you read through this post fully first before you start doing stuff. I have broken the steps out into 6 General sections:
- Prep your old site
- Prep your new environment
- Work on a local copy of your site
- Install old files in new environment
- “Shut down” old site
- Post production work
Pay Attention: When you are executing command line or mySQL commands, be sure to check quote marks. If you cut and paste from this blog post, you may get incorrect characters for the quotes. It is sometimes better to hand type in the single and double quotes.
Lastly, take notes or keep a log of what you do (just in case you have to do it again like I did). Ready? Let’s go!
Prep Your Old Site
On your OLD DOMAIN and server, do the following:
- Make a mySQL backup of your current DB (I use plugin called WP-DBManager and really recommend it)
- Download a full copy of your current WordPress web directory (this will preserve the active state of plugins should you ever need that as well as the DB backup you just did)
- Print out or save a list of your active plugins (trust me, it’s worth it)
- Put site in Maintenance mode (I use a plugin called Maintenance Mode which is great for putting your site offline for the public but still allowing you to see and work with it assuming you are logged in)
- Once in Maintenance Mode, disable all non-essential plugins (e.g., leave Maintenance Mode plugin on and WP-DBManager on as well)
- Do another full download of your site (optional but do it if you made any changes to plugins – updated or deleted for example)
- Go to phpmyadmin (or command line mySQL ) and do a full mySQL dump – or you can probably use the SQL dump that WP-DBManager provided.
- Be sure you save original files before making modifications (e.g., I created multiple directories, one for the “original” web files and mySQL dumps, and then one directory for later modifications of files and mySQL on my local machine)
Prep your New Environment
On your NEW environment, do these steps:
- Create an empty DB (get all of the details for later: server, db, user, password)
- Create a web folder for your new WordPress installation
- Create a robots.txt on new site with the following line:
User-agent:*
Disallow: /
This will prevent search engine robots from crawling your site while you work on it
Work on a Local Copy of your Site
On your LOCAL computer (e.g., where you downloaded all of your info to), do the following:
- Edit wp-config.php with to set your new domain:
define('WP_SITEURL', 'http://www.NEW-DOMAIN.com');
define('WP_HOME', 'http://www.NEW-DOMAIN.com');
I put these almost at the top of the file prior to other “define” calls. - Edit wp-config.php with your new DB settings (server, db, user, password)
- Edit the starting lines of your mySQL dump file to specify the new DB name in your NEW environment. It should be in the first section. Something like:
/* CREATE DATABASE 'database_name' DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; */
USE 'database_name';
Note: I actually commented out the “create database” part since the provider I use (1and1.com in this case), creates the DB for you. I just used the “use” clause.
- For 1and1 users: edit the .htaccess file to force the server to use PHP 5.
AddType x-mapp-php5 .php
This prevents you from getting the pesky Server 500 errors.
- Do a search for the URL as a content string within your WP directory files. Sometimes plugins or themes have hard-coded links (one called cformsII does this where it writes the full path to the location of the js file). Search for your old domain name “http://www.old-domain.com“. Open and review those files and change them, if appropriate, to “http://www.new-domain.com“. Be sure to try variations of this (e.g., without the “www”)
- Delete anything in the wp-content/cache (e.g., if you have a caching plugin enabled)
- I commented out the cache info on my wp-config.php file to make sure it was off there as well.
Install Old Files in New Environment
On the NEW Server, do the following:
- Upload your local modified DB to your new site. Warning, it’s better to use mySQL commandline than phpmyadmin. There are limits to the sizes of files you can upload using phpmyadmin. For 1and1, I used SSH to connect to my server and also uploaded the DB to a distinct directory via FTP and put it in this directory (e.g., I called it “mysql”). Then, via SSH, I changed to that directory and executed the following command:”
mysql -h SERVER -u USER -p DB NAME < DUMP FILE.sql
“(without the quotes and obviously updating the SERVER, USER, DB NAME and DUMP FILE with your info)
and then at the password prompt entered the db password. Hit enter and then let it populate the new DB. - While your data is loading, upload your WordPress files (the ones you modified) to your new server
- Wait around while it all transfers
- Once everything has transferred, go to http://www.new-domain.com/wp-admin and log in (remember, you site will hopefully still think it is in “Maintenance Mode” based on how you left the old site).
- Install and Activate the following two plugins:
Search & Replace
Velvet Blues Update URLs - Do search & replace with both plugins with old/new domains
- Update permalinks within WordPress
- Go to phpmyadmin and run 3 queries/updates:
- Update WordPress Settings in DB
UPDATE wp_options SET option_value = replace(option_value, 'http://www.old-domain.com', 'http://www.new-domain.com') WHERE option_name = 'home' OR option_name = 'siteurl';
- Update Permalinks in DB
UPDATE wp_posts SET guid = replace(guid, 'http://www.old-domain.com','http://www.new-domain.com');
- Update Any Links within your blogs content
UPDATE wp_posts SET post_content = replace(post_content, 'http://www.old-url.com', 'http://www.new-url.com');
- Go back to your printout and activate all of the other plugins
- Test, test and test again
- Update your sitemap.xml (via plugin or whatever)
- Remove the two lines in wp-config.php where you manually defined new domain
- Test again
- Remove robots.txt file
- Note: you might also want to check the path for your uploads directory as well. In some cases, your new host might have a different path. Go to Settings – Miscellaneous and check to see if it says the default “wp-content/uploads”. If you are getting issues or errors with image displays and such, you may have to tweak that setting.
“Shut Down” the Old Site
Back at your OLD site, you need to tell it to send all traffic to the new site and new URL. The best way to do this is via 303 redirects. You want to be sure you have this in place especially if your previous domain was heavily indexed by the search engines.
- Set up redirects: either via hosting control panel or directly in .htaccess (this is a great guide to applying Apache 303 redirects)
Be sure that your redirects preserve the full path to your new site. For example, if www.old-domain.com/test_post/ existed, it should redirect to www.new-domain.com/test_post/.
Post Production Work
This part becomes very subjective. It all depends on what you have set up for your old blog. You may have more or less work to do. The items below are only some suggestions and will probably help you get started thinking about what you need to do.
- Update any 3rd party items:
- Google Analytics
- Discussion plugins
- Feedburner
- Social Profiles
- Ad networks
- Get friend to test
Special thanks go out to the authors of these two articles:
How To Move A WordPress Blog or Website
Move your WordPress blog to a new domain in 10 steps!
Without these sites, I really couldn’t have done it.
Other links:
– WordPress official documentation on how to move WordPress.
As I said, this is a complicated process. I hope that I have not missed any steps. Please leave a comment if this WORKED or FAILED as well as add any suggestions or additions to these instructions. I will update this post as appropriate.
Did you find this solution useful? If so: [paypal-donation reference=”Move WordPress”]
HTD says: While moving a blog to a new server or domain seems daunting, if you follow through the steps and line of logic, you can get it done just fine!
25 Responses
Hello, i have installed wordpress ta domain.org, but i need to have domain.com as main domain (domain.org i wolud lik to be parked) of that installation. If ponit name servers (domain.com) to hosting where is wordpress installed would by blog work??
Hello, i have installed wordpress ta domain.org, but i need to have domain.com as main domain (domain.org i wolud lik to be parked) of that installation. If ponit name servers (domain.com) to hosting where is wordpress installed would by blog work??
Hello, i have installed wordpress ta domain.org, but i need to have domain.com as main domain (domain.org i wolud lik to be parked) of that installation. If ponit name servers (domain.com) to hosting where is wordpress installed would by blog work??
You should be able to have two domains or more pointed to your blog. However, you do have to choose what your main domain will be and use that in the configuration.-HTD
You should be able to have two domains or more pointed to your blog. However, you do have to choose what your main domain will be and use that in the configuration.-HTD
You should be able to have two domains or more pointed to your blog. However, you do have to choose what your main domain will be and use that in the configuration.
-HTD
Thanks for the tutorial, i already move my blog.
Dini
I plan to move wordpress, good tutorial.
I plan to move wordpress, good tutorial.
http://www.anly.info Free hosting is a complete solution with you everything you need to run your own website. Our
powerful free hosting plan has PHP 5 and MySQL support. You get a free sub-domain, FTP access.
Add on your own TLD using the domain manager.
The Automatic Script Installer (Like Fantastico) is included with every free hosting plan. You
can install many popular scripts such as PHPbb2 & PHPbb3, Wordpress, Zen-Cart, osCommerce, MyBB,
UseBB, MyLittle Forum, 4images, Coppermine, SMF, Joomla, e107, XOOPS, PHP Wind, CuteNews, Mambo,
WikiWig and many more! No need to wait for uploading files, Our Automatic Script Installer
deploys the files in seconds!
300 MB disk space,Vista Panel,Web mail
10 GB Monthly transfer,Password protected folders,POP email accounts
3 MySQL databases,Automatic installer,Park Domains
6 Add-on domains,FTP account,Php MyAdmin
6 Sub domains,Browser File,manager Clustered servers
Link: Sign Up
Moving a domain ain't that hard. I really thought it took more programming skills than that. Thank you for the tutorial. I'll give it a try as soon as I decide where to move my blog. Now I'm really happy I chose Wordpress, it's easy to use and it doesn't make too much problems when it comes to moving the site.
This is really complicated. But very detailed instruction. Thank you so much for sharing this..
Hello, First I know this post is old but still, maybe someone is watching it.
I'm trying to prepare myself for a future host from host migration, so I want to do the testing locally, so I've done all that is listed here.
Done the wp-content backup
Done the DB backup
Create a New DB
Create a New user
Set permissions to new user
Restore the downloaded DB into the new database
Installed wordpress
configure wordpress
update via commands the new domain and all stuff
The connection all went just fine, but no one post appear, no information in the blog.
I know I can do an export/import via wordpress but I want to do it via the SQL DB (hard) way.
BUT i know I'm doing something difference which I do not know if should be done in this process :
First I installed wordpress on IIS (just for the sake of learn how to)
Second I'm using a different version of wordpress from the actual blog. I have wordpress 2.9.2 in the production site and wordpress 3.0 RC1 in the development site.
As I said before, my problem is that after I did everything as told me by every guide that I could find, I can not see the information even as the site is working.
I always watch for new comments on posts! Yes, it's a bit old (and stale in my brain) but I will try to help.
Some things to think about, is the domain changing? Did you do a search for that in the DB? Did you check your WP-config.php file to ensure that you have all of the proper settings there? Sometimes you actually need to get into the DB to check the Options table (I can't remember the exact name) and make sure that none of your old domains are there. I'm not sure what changes happen in the data structure between 2.9.2 and 3.0 RC1 but I have played around with a beta version of 3.0 (not the process you described though).
Without being able to actually do hands on, it's hard to really tell. Sorry.
Good luck!
Some things to think about, is the domain changing?….Yes from http://www.nehemoth.com to http://localhost
Did you do a search for that in the DB?
Of course and change it via a query
Did you check your WP-config.php file to ensure that you have all of the proper settings there?…..Indeed, a lot of time
Sometimes you actually need to get into the DB to check the Options table (I can't remember the exact name) and make sure that none of your old domains are there.
That it the wp_options and I did it
I'm not sure what changes happen in the data structure between 2.9.2 and 3.0 RC1 but I have played around with a beta version of 3.0 (not the process you described though)..
lets wait and see.
Not problem, thank you for answer me
I found my problem, as the time have passed by, I have multiple tables, so my Table_Prefix should be set to the correct table set.
I was thinking about that! Great that you found the solution.
I'm not sure what changes happen in the data structure between 2.9.2 and 3.0 RC1 but I have played around with a beta version of 3.0 (not the process you described though).
http://www.domaintradedeals.com
Domain Names
hi there,
I have changed my website http://www.signdeco.com.my/detikindah to http://www.detikindah.com, everything works fine, but only the images won’t appear. the links to the storage folder is correct but in the edit page a broken link symbol appear..
Thank you! This saved me some time. Migrations are never fun!
Wordpress is SEO friendly so settings have to come as on domain registrar’s and more over new web hosting space not have bad network.
Great post…. :)
This is very easy to understand and move my site.
Thanks for sharing
Great post…. :)
This is very easy to understand and move my site.
Thanks for sharing
Glad that you found it useful and helpful. Thx for the comment.
Thanks for sharing the blog. I think this blog help many technical guys like me who are working on WordPress. If you need any help with mobile app development read our blog. https://www.sphinx-solution.com/blog/mobile-app-development-guide-for-beginners/