How to Migrate Blogger Powered Blogs to Wordpress

I gave my mom my old weight loss blog a few years back. In spite of publishing it on its own domain (smart) I was still using Blogger (dumb) when I gave it to her. It is not that Blogger is bad, but that Wordpress offers so many customization options that allow you to effectively rank for a wider array of keywords, and thus earn more per word.

These are the steps I did to help move her blog over from Blogger to Wordpress.

Step 1: Download and install Wordpress (also requires setting up a MySQL database).

Step 2: Make Wordpress URL configurations.

  • set the category base to /c and set the tag base to /t
  • set the post slug to /%postname%/

Step 3: Cloned my mom's old blogger theme design using Themepress (cost $10), and then had to hack the CSS by hand for about 10 minutes.

After verifying the layout was fairly decent I deleted the blogroll links and the opening post.

Step 4: publish my mom's old blog onto blogspot.com so I could import it to Wordpress using the one click import located at domainname.com/wp-admin/import.php

After importing it I used Blogger to republish the blog back to her domain instead of leaving a copy on Blogspot, such that she does not have a stray cloned version of her site floating around.

Once import was complete I looked it over and verified it generally looked good. If you still have your old site up you can view the Wordpress blog version by going to yoursite.com/index.php (presuming you installed Wordpress in the root of your site).

Step 5: rewrite the .htaccess file to include both the Wordpress specific functions and rewrite rules needed to lose the dates from the URLs. The exact .htaccess file you need to write depends on your old URL structure and file extensions (the below one redirects html and shtml files). Our .htaccess file looked like this (note there were a few dozen lines like the first line, but I limited it to one in this example for brevity)

redirect 301 /2008_07_01_archive.html http://www.fattyweightloss.com/2008/07/

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule (\d{4})/(\d+)/(.*)\.shtml$ $3/ [L,R=301]
RewriteRule (\d{4})/(\d+)/(.*)\.html$ $3/ [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Please note that when Wordpress imports your blog some of the stop words are removed from the URLs, which can end up creating some mean 404 errors until you line up the new URLs with the old ones (which we deal with in step 7). Also, if you used Blogger tag pages then you might need to make your .htaccess file a bit more complex than the above one, adding entries to redirect the tag pages.

Step 6: Delete my mom's old static file archives.

If you are afraid that something might get hosed up with the move you can rename the old archive files and folders. For example:

  • Name the root index.html to something like index5.html
  • If you have a /2004/ folder make it something like /12004/

After these are renamed or deleted click around the site and verify it generally works.

Step 7: Installed a couple SEO related plug ins.

Akismet - comment anti-spam tool installed by default, but I had to get an API key and enable it.

SEO Title Tag - allows you to make the page title and H1 post heading different...great for on page optimization.

Redirection plug in - keeps track of 404 errors and allows you to redirect URLs.

What I did, rather than redirecting URLs, was find the URL slugs that did not align with the old URLs and rewrite the URL slugs to add the stop words into it (I believe the most common ones were and and the).

I monitored 404 errors logged by the redirection plug in for ~ 4 days and fixed everything I came across. I figure all the important, well linked to, and/or high traffic posts should have got traffic within the first 4 days.

After 8 weeks I will flush the 404 error log and look for any stray link equity that I am not capturing, and redirect those URLs to their new location.

WASABI Related Entries - this plug in automatically creates a list of related entries wherever you like in your theme (you can install it in the sidebar or possibly after your comments). The beauty of such a plug in is that it allows you to keep more of your PageRank flowing internally, and it allows you to put a bunch more keyword rich content within a page without it looking spammy. For instance, given the following image you know what the related post is about without even seeing it.

Lorell reviewed a variety of other related post plug ins.

Step 8: While I was fixing up my mom's URLs I helped offset the revenue shortfall from the short term traffic decline by using IE conditional comments to place an extra AdSense block on her 404 page when Internet Explorer viewers accessed the error page.

Step 9: Final window dressings :)

Use Xenu Link Sleuth to crawl the site to look for any broken links you need to fix. Please note that you may need to change the number of threads running or Xenu might get blocked by your server. I had no luck with 30 threads, but 4 worked ok.

Set up your robots.txt file to prevent Googlebot from trying to create search pages (?s=). Also prevent them from trying to index admin pages, feeds, trackback URLs, and the p= post URLs (presuming you are using post slugs as mentioned above).

User-agent: *
Disallow: /page/
Disallow: /*p=
Disallow: /?q=
Disallow: /?s=
Disallow: /*trackback
Disallow: /*feed
Disallow: /*wp-login
Disallow: /*wp-admin
Disallow: /*xmlrpc.php

Matt Cutts offers some tips to protect your Wordpress blog from getting hacked. Patrick Altoft offers tips on how to use a Google Alert to check if your blog gets hacked.

Map out keyword strategy and assign old posts to related categories. Set your default category to something that is useful rather than leaving it as uncategorized. While editing particularly high traffic posts it might make sense to see if the page title or page contents could be further improved to make the post even more successful. In some cases a post can rank for a wide array of related keywords.

While ensuring that are category pages are linked to sitewide, I used conditional PHP statements in the sidebar.php file for monthly archives such that they were linked to from the homepage, but not from the individual post pages. This drives more link equity toward the category level pages, while driving less to the date based archives (as we would rather rank for low fat recipes than for August 2007).

<?php if ( is_home() || is_page() ) { ?>
<li><p class="sidebar-title">Archives</p>
<ul>
<?php wp_get_archives('type=monthly'); ?>
</ul>
</li>
<?php } ?>

As a bonus, one could also add a plug in for editing default category pages, but we have not done that yet as we still have a long way to go with categorizing the current contents first. Anyone know of a good plug-in to edit category pages?

Step 10: (Only if Your Old Blog Was Published on Blogspot) redirect Blogspot address.

If you were hosting your blog at Blogspot and have some good inbound link equity coming into it you can redirect those links to your website by using this code in your Blogger template, which was an upgrade of the code orignally published here.

Published: July 26, 2008 by Aaron Wall in blogs

Comments

cbiggins
July 27, 2008 - 3:44am

Great post, thanks. I have been meaning to move my blogger blog to a wordpress install for a while now. Thanks!

timmcg
July 27, 2008 - 4:55am

My friend just went from Blogger to Drupal with a stop at Wordpress on the way.

If you want to go the rest of the way to Drupal, this link might help:

http://mydrupaladventures.com/content/my-experiences-migrating-wordpress...

jameszol
July 27, 2008 - 5:46am

This post isn't only about how to migrate blogger powered blogs to wordpress - at least for me, it was also a list of things 'to do' on my own wordpress blog:

1. Install the Redirection plugin "and look for any stray link equity that I am not capturing, and redirect those URLs to their new location."

2. Install a 'related entries' plugin. I will definitely give the WASABI one a try, but I would also consider a few others depending on my template and personal preferences...funny thing is that Matt Cutts wrote a post with a few of them listed today too! Hooray - so many new 'related entry' plugins to try!

3. Fix my broken links...last time I checked, I think I had 10 of them. :(

Thanks for the reminders Aaron! :)

July 27, 2008 - 6:21am

Thanks for that link Tim.

Glad you found it helpful James.

selfhelpguy
July 27, 2008 - 7:41am

Wow! That's a lot of SEO work there. Your mom must be proud :P.

sciscoop
July 30, 2008 - 9:53am

Isn't it illegal under Adsense T&Cs to have ad blocks on error pages, including 404?

db

July 30, 2008 - 11:23am

One of their policies is "No Google ad may be placed on any non-content-based pages." so I guess as long as you have some content on the error pages maybe it is ok. In the past the TOS forbid AdSense on error pages, but I think that went away about a year and a half ago or so.

hisnameisjimmy
July 30, 2008 - 5:37pm

Don't get me wrong, you have a wonderful tutorial here, but it doesn't mention what to do if you didn't publish to a .com. So if you have been publishing to something like yoursite.blogspot.com you are basically hosed.

I wrote up a tutorial that pretty clearly explains what to do if you made the mistake of publishing to a yoursite.blogspot.com type of situation. It's not perfect, but it does the trick.

http://www.libertyinteractivemarketing.com/blog/successfully-forwarding-...

DeFries
July 31, 2008 - 3:03pm

I have done a couple of redirect 301's today on a blog I maintain, but am wondering how long it takes before the pagerank is transfered for the old page to the new page. Any idea?

August 7, 2008 - 12:04pm

Lots of factors. It depends on how important the pages are, where the site is in the crawl cycle, how big the site is, etc.

Add new comment

(If you're a human, don't change the following field)
Your first name.
(If you're a human, don't change the following field)
Your first name.
(If you're a human, don't change the following field)
Your first name.