Migrating Old Permalinks to WordPress

Now that I migrated to WordPress for blogging, the permalinks of my previous blog entries have changed.

For example:

/article_php_5_enterprise_edition_available_online

changed to:

/2006/11/26/article-php-5-enterprise-edition-available-online/

My initial idea was to use mod_rewrite by adding a RewriteRule for each old link redirecting to the new location, but that looked like a lot of copy&paste to me and would not teach me anything new.

Instead, I chose to redirect requests for old links to the WordPress search page. Try it out yourself: Click on this old permalink /article_php_5_enterprise_edition_available_online and you will be redirected to the search page, which displays the blog entry to you as a search result. This looks like a more flexible solution to me, just in case that my permalinks might change again one day.

The implementation was simple. I added a few lines of PHP code to the 404.php page of my WordPress theme as described in the support topic 404 Search Function for WordPress. I also added a header redirect directive.

This is the full code:

  1. // Adjust if WordPress is located in subdirectory,
  2. // e.g. www.example.com/weblog. Otherwise leave empty.
  3. $blog_uri       = 'weblog';
  4.  
  5. // Don't change from here.
  6. $search_url     = $blog_uri.'/?s=';
  7. $search_term    = urldecode( substr($_SERVER['REQUEST_URI'],1) );
  8. $find           = array("'".$blog_uri."'", "'/'", "'[-/_]'") ;
  9. $replace        = " " ;
  10. $new_search     = preg_replace($find, $replace, $search_term);
  11. $new_search     = urlencode($new_search);
  12.  
  13. // Redirect to search page.
  14. header("Location: /".$search_url.$new_search."&http_status=404");
  15. exit;

Notice that for security reasons, I use urlencode() for the search page URL to avoid HTTP Response Splitting.

About Sandro Groganz

Sandro Groganz is an expert in the field of marketing open-source products. He co-founded Age of Peers, a global communications agency for organizations in Open Source. He served as Head of Marketing at Magnolia, creator of the open web content management system Magnolia CMS, Vice President of Marketing at Mindquarry, an open source startup financed by Hasso Plattner Ventures, and Vice President of Communication at eZ Systems, the creator of the open source content management system eZ Publish.

Facebook Comments