To main content

Redirects using freemarker in JBake

Published by Benjamin Marwell on

When we started converting the old Apache Shiro website from SCMS to JBake, I noticed some of the sites were just redirects. Luckily, it is quite easy to do similar things in JBake using Freemarker.

I have not found a solution to modify .htaccess using freemarker, so this is the solution I came up with.

Creating a new template

The first things you need to do is to create a new template. First, create a file templates/redirect.ftl with these contents:

That is a barebone. Extend it as you wish (e.g. a delay in the javascript and nicer messages).

Adjusting jbake.properties

Now Jbake needs to know about the new template. You just need to add a single line:

Creating redirect content

Ok, the last step in the chain is to create a site which actually redirects the user to the target site. I want to redirect quickstart.html (generated from quickstart.adoc) to 10-minute-tutorial.html.

The new asciidoc attribute :jbake-target: /10-minute-tutorial.html is not optional. Hence, I did not define a default, so the baking will fail if the attribute is missing. This is intentional.

Now, everytime someone opens quickstart.html, he will be redirected to /10-minute-tutorial.html.

Conclusion

Creating a redirect only takes three simple steps.
Let me know if you found this small tutorial helpful.