Daniel Doubrovkine bio photo

Daniel Doubrovkine

aka dB., CTO at artsy.net, fun at playplay.io, NYC

Email Twitter LinkedIn Github Strava

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.

  - jekyll-redirect-from

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: http://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.

permalink: '/ShowPost.aspx/'

<script language='javascript'>
var posts_map = {};
{% for page in site.posts %}
  {% if page.dblog_post_id %}
    posts_map[{{ page.dblog_post_id }}] = '{{ page.url }}'
  {% endif %}
{% endfor %}

function getParameterByName(name) {
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
        results = regex.exec(location.search);
    return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));

var id = getParameterByName('id');
var url = posts_map[id];

if (url) {
} else {
  window.location = '/'

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.