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" aliases: - /my-awesome-post/ - /2020-1/ ---
The above would make the post available at
Hugo creates a HTML page for each alias with the following content
<!DOCTYPE html> <html> <head> <title>https://example.com/posts/my-intended-url</title> <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"/> </head> </html>
<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.