Cookbook: Redirecting all traffic from HTTP to HTTPS

Some times you will have a production website that has to be used via HTTPS. However, many users are not aware that they need to type https: and not http: into their browser. The request will simply timeout if only port 443 is used, or the users will get 426 Upgrade Required if port 80 is also turned on on your Cherokee configuration.

No need to worry. Rewrite rules can easily handle this situation.

To achive your goal you will simply have to set up a redirection making use of the ${host} macro, such as the following one.

First, create a new complex rule of type NOT Is SSL/TLS, that is, make a rule of type TLS/SSL, and apply the NOT boolean operator to it.

Then configure the Redirection handler to use the specified macro like this:

Regular Expression Substitution



Of course, this macro uses the standard template subsystem , which provides slicing support. This means you could specify a substitution such as https://${host}[:-4].com/$1 that would redirect any matching request to an HTTPS version of that request for the .com TLD. As an example, provided all the domains matched your virtual server, you could send traffic from,, and to