Moving a blog from one hosting provider to another is not that difficult of a task, but changing domains in the process can be a headache. There are six main steps, which this article will walk you through:
- 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 article, you may get incorrect characters for the quotes. It is sometimes better to hand type in the single and double quotes.
- Take notes or keep a log of what you do (just in case you have to do it again).
- Make a mySQL backup of your current DB. You can use a plugin (e.g. WP-DBManager).
- 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 (it’s worth it).
- Put site in Maintenance mode (you can use a plugin like 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., create multiple directories, one for the “original” web files and mySQL dumps, and then one directory for later modifications of files and mySQL on your local machine)
- 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:
This will prevent search engine robots from crawling your site while you work on it
- Edit wp-config.php with to set your new domain:
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; */
Note: You can comment out the “create database” part if the provider you use creates the DB for you. Just use the “use” clause.
- In this example, 1and1.com is the provider used, and in this case you must edit the .htaccess file to force the server to use PHP 5 and prevent pesky Server 500 errors: AddType x-mapp-php5 .php
- 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). You may want to comment out the cache info on your wp-config.php file to make sure it is off there as well.
- 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, SSH was used to connect to the server and also the DB was uploaded to a distinct directory via FTP and put in this directory (e.g., called “mysql”). Then, via SSH, change to that directory and execute 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 entere 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:
- 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 DBUPDATE 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 DBUPDATE wp_posts SET guid = replace(guid, ‘http://www.old-domain.com’,’http://www.new-domain.com’);
- Update Any Links within your blogs contentUPDATE 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.
“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
- Social Profiles
- Ad networks
- Get friend to test.
- Take notes or keep a log of what you do.
- Read all of these directions at least twice.
- This is tricky for some and very easy to screw up. It may take a lot of research, reading and trial and error before you get it to work.
- 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.
- How to Transfer a Domain from Yahoo! Account
- How to Start a Blog
- How to Create a Free Redirect Domain with DynDNS
- How to Install WordPress Mu
Sources and Citations
- HighTechDad.com – Original source of this article, shared with permission.
- How To Move A WordPress Blog or Website
- Move your WordPress blog to a new domain in 10 steps!
Article provided by wikiHow, a wiki how-to manual. Please edit this article and find author credits at the original wikiHow article on How to Move a WordPress Blog From One Domain and Host to Another. All content on wikiHow can be shared under a Creative Commons license.