I migrated this blog to Ghost some time ago, but I thought it might be useful to someone else to see how I kept my permalinks intact after moving off Wordpress.
Here's the problem: Wordpress used this format for posts
Ghost, out of the box, uses simply
/post-title which I like.
The Ghost Wordpress plugin worked great to do the initial import, and kept most of my fancy formatting. But since Cool URIs don't change I still needed some way to make the permalinks work. At the time I couldn't find a way to make Ghost use Wordpress-style permalinks and, honestly, it felt like too much structure for this tiny blog.
Turns out that the Wordpress XML export includes the permalinks for each post, so I wrote some XPath to extract just those elements, something like this:
xpath weblogfred.wordpress.2013-12-07.xml //item/wp:postmeta/wp:meta_value@text
xpath tool's output sucks, so I ended up copying-and-pasting the list of permalinks into Emacs.
This ended up with a list like:
/about /2009/04/problems-installing-easy_install-python-imaging-library.html /2009/06/the-unofficial-way-to-uninstall-darwinports-macports.html ...
With the help of a little Emacs macro magic, I rewrote the list to:
rewrite ^/about$ /about permanent; rewrite ^/2009/06/the-unofficial-way-to-uninstall-darwinports-macports.html$ /the-unofficial-way-to-uninstall-darwinports-macports permanent; ...
I then saved those in
/etc/nginx/permalinks.conf and then added
include permalinks.conf; in the correct
server block in my nginx config.
All in all, this worked pretty well, but was way more complicated than I'd like. At least it was a one time deal, and was right at the threshold of "number of things that I'll deal with manually" which works out to be about 30 items.
Here's the final result: