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:

PHP:
  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");

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

One Response to “Migrating Old Permalinks to WordPress”

  1. Recently leaked footage of the new Paris Hilton sex tape Says:

    naked a 1 night in Paris Hilton exposed…

    Recently leaked footage of the new Paris Hilton sex tape…

Leave a Reply

« Back to text comment

Subscribe without commenting