diff options
Diffstat (limited to 'content/blog/2021-10-09-apache-redirect.org')
-rw-r--r-- | content/blog/2021-10-09-apache-redirect.org | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/content/blog/2021-10-09-apache-redirect.org b/content/blog/2021-10-09-apache-redirect.org new file mode 100644 index 0000000..9e7121d --- /dev/null +++ b/content/blog/2021-10-09-apache-redirect.org @@ -0,0 +1,45 @@ +#+date: <2021-10-09> +#+title: Apache Redirect HTML Files to a Directory +#+description: + + +* The Problem + +After recently switching static site generators (SSG), my blog URLs +changed with no option to preserve the classic =.html= extension at the +end of my blog post URLs. + +I really disliked using my old SSG ([[https://jekyllrb.com][Jekyll]]) +and prefer my new tool ([[https://www.getzola.org][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. + +* The Solution + +To solve this problem, I really needed to solve two pieces: + +1. Redirect all blog post URL requests from =/blog/some-post.html= to + =/blog/some-post/=. +2. Ensure that no other =.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. + +#+begin_src conf +RewriteEngine On +RewriteCond %{REQUEST_URI} !\index.html$ [NC] +RewriteRule ^(.*).html$ https://example.com/$1 [R=301,L] +#+end_src + +This piece of code in the Apache =.conf= or =.htaccess= file will do the +following: + +1. Turn on the RewriteEngine so that we can modify URLs. +2. Ignore any =index.html= files from the rule we are about to specify. +3. Find any =.html= files within the website directory and redirect it + to exclude the file extension. +4. The final piece is adding the trailing slash (=/=) at the end of the + URL - you'll notice that I don't have an Apache rule for that since + Apache handles that automatically. |