I’ve recently moved this blog to Jekyll, moved all my art-related posts to a new art.dblock.org Jekyll blog and replaced www.dblock.org with a landing page. The last bit is to redirect any old popular content from the old www.dblock.org, such as Your Commute is Killing You: Move to New York or How To Frame and Hang Very Big Drawings to one or the other site.
The landing www.dblock.org site is also a Jekyll site.
Include the Redirect Gem
Include the jekyll-redirect-from gem in _config.yml.
Create Redirect Pages
The jekyll-redirect-from library supports redirect_from and redirect_to. It creates a file for the source path and a page with a redirect to the destination. Since anything that is not prefixed by an underscore is copied as is to the Jekyll _site folder, we can just create a file for each URL in a new redirect directory. For example, here’s my redirect/your-commute-is-killing-you-move-to-new-york.markdown file.
---
redirect_from: /your-commute-is-killing-you-move-to-new-york/
redirect_to: https://code.dblock.org/2011/05/29/dear-california-engineer-your-commute-is-killing-you-move-to-new-york.html
---
Moving Pages with Parameters
My old blog had a more complicated scenario with URLs that included a query string ID in the form of ShowPost.aspx?id=X. How does Jekyll handle .aspx extensions and how do we translate such an URL into an existing post?
The export tool I wrote added a field to every post called dblog_post_id.
---
layout: post
title: "Pure Java Waffle"
...
dblog_post_id: 95
---
We can create a plain HTML page that will extract the ID from the query string and use a map to perform a redirect. Jekyll will not serve .aspx pages, but if you try to retrieve a folder without a trailing slash, you will be redirected to its index.html page. This is part of the HTTP standard. I created posts/ShowPost.aspx.html that iterates over all posts and performs the redirect.
Try It
Try www.dblock.org/your-commute-is-killing-you-move-to-new-york and code.dblock.org/ShowPost.aspx?id=103.
Everything is open-source. Click here for the source code for the plain redirect and here for the more complicated ASPX one.