After recently switching static site generators (SSG), my blog URLs changed with
no option to preserve the classic .html
extension at the end of each of my
blog posts.
I really disliked using my old SSG (Jekyll) and prefer my new tool (Zola) much more, so I was determined to figure out a way to get the proper redirect set up so that people who find my posts online aren't constantly met by 404 errors.
To solve this problem, I really needed to solve two pieces:
/blog/some-post.html
to
/blog/some-post/
..html
files are redirected, such as index.html
.After a lot of tweaking and testing, I believe I have finally found the solution. The solution is shown below.
On
%{REQUEST_URI} !\index.html$ [NC]
^(.*).html$ https://example.com/$1 [R=301,L]
This piece of code in the Apache .conf
or .htaccess
file will do the
following:
index.html
files from the rule we are about to specify..html
files within the website directory and redirect it to
exclude the file extension./
) at the end of the URL -
you'll notice that I don't have an Apache rule for that since Apache handles
that automatically.