When converting a site that may be serving content with a date based URL, something like {domain}/{path}/{year}/{month}/{slug}/, it makes sense to retain the existing structure when porting content; the old content is indexed by the likes of Google, Yahoo, Microsoft. Getting existing content re-indexed is a nightmare, if it is even possible. One possible way to fix this issue is to setup redirects, which are generally expensive, a lot of work, and generally causes issues of their own.

When migrating your content to Ghost, we can easily setup dynamic routes, which allow for content to be created in a native format but responsive to the old URL layout without having to setup exhaustive redirects.

With a simple collection, both the common slug and a date based slug can be used simultaneously.

collections:
    /:
        permalink: "/{year}/{month}/{slug}/"
        template: "index"
    /{year}/{month}/{slug}/:
        permalink: "/{slug}/"
        template: "index"

This very collection is used on https://cloudnull.io, which allows this post to use the simple slug and a date based slug, and my older content to retain its current date based URL; all URLs have a single permanent link which is great for SEO.

Here's an actual example of how this is working with some older content.

This simple setup allows for a smooth migration to Ghost from a platform like Drupal or WordPress without having to deal with complicated server-side redirects or other platform migration tactics. The power of Ghost's builtin routing capability is nearly endless and just one of a million reasons why Ghost is a spectacular platform.