I’ve just updated my Jekyll setup from Jekyll 2.x to Jekyll 3.x. Apart from changing
the highlighter
setting to rouge, which is the new default syntax highlighter,
I had to update my .htaccess file, since my blog is hosted on a shared Apache server.
By default, my Jekyll 2.x setup generated the blog posts as directories named as the post permalink; in 3.x, it changed to html files named as the post permalink. Because of that, I had to tweak my RewriteRule a little bit.
Options -Indexes
Options -FollowSymlinks
Options -MultiViews
RewriteEngine on
RewriteBase /
# Other rules
# ...
# Remove the .html extension
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9\-]+)\/?$ $1.html [NC,L]
In my RewriteRule, I’ve included an optional trailing slash, which matches the
old links. It poses no SEO risks because Jekyll already includes the rel="canonical"
tag.