Moving a Wordpress site without affecting SEO & Rankings

15 April, 2013 by Tom Elliott

This guide is for anyone looking to move their WordPress blog or website from one hosted domain to another, whilst maintaining the URL structure. These are the steps I took when I recently moved my blog from www.tom-elliott.net to www.tomelliott.com, which I’ll refer to as www.oldsite.com and www.newsite.com.

Checkout my post on moving WordPress from localhost to live if you are moving a local website instead of changing domains.

I will cover the technical aspects of moving the WordPress site followed by SEO best practices to minimise potential loss of rankings and traffic to the site.

Part 1: Moving your WordPress website

Once you have your domain and hosting setup for www.newsite.com, the first stage is to setup your WordPress site or blog here with exactly the same URL structure. These are the steps I took which made the process relatively straightforward.

  1. FTP download all you’re files from the old website root (such as ‘httpdocs’ or ‘public_html’), including the entire WordPress directory and upload to the new site’s root folder, maintaining the same directory structure. My FTP program of choice is Filezilla.
  2. Export your WordPress database from the old site. Check out the WordPress Database Export page to see how to get all tables exported as an .sql file
  3. Setup a new MySQL database on the new site. If you give it the same database name and setup a user with the same username and password as used for the old database, then that will make the process easier. If you can’t remember these details, you can check the wp-config.php file in the WordPress root folder.
  4. Import the .sql database within PHPMyAdmin or whichever database control panel your hosting package uses. If you try and visit www.newsite.com at this stage, you’ll probably get redirected to www.oldsite.com
  5. Download the excellent WordPress search and replace script and upload it to the root of your new site. This will find and replace all occurrences of the old URL and replace with the new in every table in the database including settings, pages, posts and comments. It will also ‘preserve the integrity of serialised string lengths’, a useful feature if the new domain is a different length from the old domain.
    – Select the pre-populate DB values options. This will save you having to enter the database connection details on the next screen.
    Wordpress Find and Replace 1
    – On the next screen, check the details and click submit
    Wordpress Find and Replace 2
    – Select all the tables to be scanned (in most cases, all tables should be selected). I also checked the ‘Leave GUID column unchanged?’ box as I didn’t want to risk RSS readers etc seeing blog posts as new
    – Enter the full old site URL in the ‘search for’ box and the new site in the ‘Replace with’ box
    Wordpress Find and Replace 3
    – Click the warning boxes and a summary screen should be displayed (usually instantly) showing how many tables and rows were scanned and how many instances have been changed.
  6. Change any instances of www.oldsite.com to www.newsite.com if they have been hard-coded anywhere in your websites PHP files or in any other non WordPress files. This may include the .htaccess file
  7. If your old site had a robots.txt file, make sure your new site does as Google will look for a robots.txt (in the root folder). If the crawler can’t find the robots.txt file, Webmaster Tools will report your site as being uncrawlable.
  8. Test your new website as much as possible, check as many pages, posts, images, download links etc as you can. Check submitting comments, contact enquiries and any other functionality.

Part 2: Minimise negative SEO when moving the website

Once your satisfied the website is mirrored and works in it’s new location, you need to tell Google you’re website has moved and to index the new site. I set about following these steps which are detailed below:

  1. Add both the old and new site to Google Webmaster Tools if you haven’t already done so.
  2. 301 redirect the old site to the new. This is the most important step as it tells Google and other search engines that your website has permanently moved. Make sure that you redirect every page to the corresponding page on the new site, assuming you have kept the same site structure. If you have a Windows server, you should be able to do this through the web.config file or IIS and if you have a Linux server, you can do this through the .htaccess file. The below .htaccess file (which should be in the root of your old site) 301 redirects www.oldsite.com to www.newsite.com
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^oldsite.com$ [OR]
    RewriteCond %{HTTP_HOST} ^www.oldsite.com$
    RewriteRule (.*)$ http://www.newsite.com/$1 [R=301,L]
    </IfModule>
  3. Submit a new sitemap. I used a sitemap generator to create one. Check your sitemap and make sure each entry for your WordPress site is listed as a unique URL and doesn’t have parameters such as ?reply-to on the pages
  4. Use the Change of Address feature in Webmaster Tools for the old site. From the main menu, select ‘Configuration’ and ‘Change of Address’
  5. Use Google’s Fetch as Googlebot. This will usually get your new site content indexed faster
  6. If you have Google+ Authorship setup for your blog (where your profile pic appears in the SERPS), it’s worth updating your Google+ profile, adding the new link to your new site.
  7. Finally, update as many external links as you can, pointing them to www.newsite.com. In most cases, it will be impossible to update all links and I draw the line at contacting webmasters of blogs but there was still a good many of links I could update. This included linkedin, Google+, Twitter, Technorati, forum signature links and a handful from other external website links.

All done! Now you just need to sit back and wait for Google to index your new site and you will begin to notice pages in the Search Engine Results Pages (SERPS) appearing as the new domain. This will happen in stages and how long it can take before all your new URLs appear in search results can vary. Newer and fresher pages will usually appear first, as Googlebot is crawling these pages more frequently. For me (with a blog of 30 posts and a PageRank of 2) this took about 2 full weeks but the majority of pages and posts were appearing as the new site after 4-5 days.

It’s a good idea to keep checking Google Webmaster Tools and Googling “site:www.oldsite.com” to see how many pages are indexed in the new and old site. Eventually, all pages should disappear for “site:www.oldsite.com”. If you’re checking rankings, do so in Chrome’s incognito mode to avoid variation in rankings

Observations when moving my site to web dev door:
After day 1: 8 URL’s indexed in Google – some category pages and one or two posts but the homepage was not indexed.
After day 2: More URLs indexed including the homepage. Mosts posts however still appeared as old domain.
After day 3: All URLs indexed as listed in the sitemap and I started to notice many posts (about 30%) now appearing as new domain. There were slight variations in rankings of key phrases which sometimes returned the old domain for the same page. My author profile pic had also been dropped on some posts.
After day 4: An estimated 40-50% of posts appearing as new domain and I noticed drops of a few positions for about 50%-60% of monitored key phrases but similar or a slight improvement in rankings for the other key terms.
After day 5: An estimated 60-70% of posts appearing as new domain, some older (and less frequently crawled posts) showing the old domain. Rankings for monitored key phrases seem stable now and at pretty much the level they were before website move.
After day 6: All but 3 monitored posts (~85%) appearing as the new site in the SERPS. Rankings and site visitors still seem stable, however my authorship profile pic was missing from most posts.
After 9 days: All posts now appearing as the new site, rankings and visits stable and authorship profile pic has returned. Only a handful of really old pages and posts still appearing under the old domain.

Summary of SEO impact when moving WordPress site

A smooth transition overall. It took nearly 2 weeks altogether for all oldsite.com pages to appear as newsite.com and the first few days saw a bit of a drop and largest variations in rankings. After 4-5 days, rankings (and visitor levels) seem to stabilise to levels before the WordPress site move. After a week, almost all monitored pages appeared under newsite.com. Although visitor levels were down about 10% compared to each of the 2 weeks before the move, I don’t consider this to be statistically significant.



2 Comments

  • Gizorro says:

    Hello Everyone,
    If someone of you can help … I have a problem with my page http://jakiprezent.pl/ since I’ve changed the domain.
    In august we’ve moved our website http://iprezenty.pl to http://jakiprezent.pl. It’s quite big site – about 6 mln of url’s indexed of old domain and full of unique content (large descriptions of categories and 8 blogs) working with.
    During this process of changing we have had few problems with our webdevelopers who by mistake have introduced duplicate content (descriptions of categories). During 2 weeks, until we’ve realized it, site was indexing with this duplicate content. Our positions have broken down systematically. From top 5 of many phases we are in the and o SERP’s.
    Do you can help what can we do in this situation?

  • MarionePatt says:

    I started out with a WP hosted account (with the .wordpress.com domain) then switched over to a self hosted a few months ago. I did the switch with the help f automated converter (here’s the tool http://goo.gl/B1cBki) and it took quite awhile to figure out some of the roadblocks. Overall, good solution – cheap and fast.