With the recent redesign and re-structuring of my website I decided to include year and month in URLs. I previously only used the post title as URL key, so a post with title
Hello world would be available at
kevingimbel.de/hello-world. With the new format this includes the section, year, and month, so for example
To prevent all old URLs from failing with a 404 I added aliases to all old posts. The documentation on aliases is pretty short and they're a straight-forward, powerful tool to make content available under multiple URL paths. Just add an alias list to the front-matter of the post.
title: "My awesome post"
The above would make the post available at
Hugo creates a HTML page for each alias with the following content
<link rel="canonical" href="https://example.com/posts/my-intended-url"/>
<meta name="robots" content="noindex">
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<meta http-equiv="refresh" content="0; url=https://example.com/posts/my-intended-url"/>
<meta http-equiv="refresh" content="0; url=https://example.com/posts/my-intended-url"/> refreshes the page after 0 seconds (immediately) and redirects to the new page at
With this little bit of extra work all old URLs should work and just redirect to the new pages.