Hugo aliases and redirects

Using aliases to prevent 404 when restructuring your Hugo site

Written by Kevin Gimbel on , 🍿 2 min. read

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 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"
- /my-awesome-post/
- /2020-1/

The above would make the post available at,, and

Hugo creates a HTML page for each alias with the following content

<!DOCTYPE html>
<link rel="canonical" href=""/>
<meta name="robots" content="noindex">
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<meta http-equiv="refresh" content="0; url="/>

The line <meta http-equiv="refresh" content="0; 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.

Hi, I'm Kevin!

I'm a DevOps Engineer with a passion for on automation and monitoring. Before shifting into DevOps and cloud computing I worked as Front-End Developer, which is still a hobby and field of interest for me.

Picture of Kevin Gimbel, in a tiny mirror

I'm very passionated about a variety of games - digital, boardgames, and pen & paper; and also interested in Sci-Fi, Cyberpunk, and dystopian books. You can find out more on the about page.