Simplify redirection rules
diff --git a/src/site/resources/.htaccess b/src/site/resources/.htaccess
index 9053f5b..ec2dfaf 100644
--- a/src/site/resources/.htaccess
+++ b/src/site/resources/.htaccess
@@ -17,21 +17,48 @@
# under the License.
#
RewriteEngine On
+RewriteBase "/log4j/2.x/"
-RewriteCond "%{REQUEST_URI}" "^(/log4j/[23]\.x)/"
-RewriteRule "^log4j-(core|api)/apidocs(.*)$" "%1/javadoc/log4j-$1$2" [R=permanent]
+##
+# To simplify the redirection rules, we normalized them:
+#
+# 1. If the request URIs points to a (non-existent) directory, we add `index.html` to it
+RewriteCond %{REQUEST_FILENAME} !-d
+RewriteRule "^(.*)/$" "$1/index.html" [DPI]
+# 2. If the request URI points to a (non-existent) file, we make sure it ends with `.html`:
+RewriteCond %{REQUEST_FILENAME} !-f
+RewriteCond $1 "!\.html$"
+RewriteRule "^(.*)$" "$1.html"
+#
+# From this point rules match against the URI to the real file, with "/log4j/2.x/" stripped.
-RewriteCond "%{REQUEST_URI}" "^(/log4j/[23]\.x)/"
-RewriteRule "^manual/api-separation(\.html)?$" "%1/manual/api.html" [R=permanent]
+RewriteRule "^log4j-(core|api)/apidocs(.*)$" "javadoc/log4j-$1$2" [R=permanent]
-RewriteCond "%{REQUEST_URI}" "^(/log4j/[23]\.x)/"
-RewriteRule "^manual/scala-api(\.html)?$" "/log4j/scala/index.html" [R=permanent]
+# The content moved between pages
+RewriteRule "^manual/api-separation\.html$" "manual/api.html" [R=permanent]
+RewriteRule "^manual/scala-api\.html$" "/log4j/scala/index.html" [R=permanent]
+RewriteRule "^manual/usage\.html$" "manual/api.html" [R=permanent]
+RewriteRule "^release-notes/index\.html$" "release-notes.html" [R=permanent]
+RewriteRule "^runtime-dependencies\.html$" "manual/installation.html" [R=permanent]
-RewriteCond "%{REQUEST_URI}" "^(/log4j/[23]\.x)/"
-RewriteRule "^manual/usage(\.html)?$" "%1/manual/api.html" [R=permanent]
-
-RewriteCond "%{REQUEST_URI}" "^(/log4j/[23]\.x)/"
-RewriteRule "^release-notes/(index(\.html)?)?$" "%1/release-notes.html" [R=permanent]
-
-RewriteCond "%{REQUEST_URI}" "^(/log4j/[23]\.x)/"
-RewriteRule "^runtime-dependencies\.html" "%1/manual/installation.html" [R=permanent]
+# Redirect old per-module directories to files
+RewriteRule "^log4j-1\.2-api/index\.html$" "log4j-1.2-api.html" [R=permanent]
+RewriteRule "^log4j-api/index\.html$" "log4j-api.html" [R=permanent]
+RewriteRule "^log4j-appserver/index\.html$" "log4j-appserver.html" [R=permanent]
+RewriteRule "^log4j-cassandra/index\.html$" "log4j-cassandra.html" [R=permanent]
+RewriteRule "^log4j-couchdb/index\.html$" "log4j-couchdb.html" [R=permanent]
+RewriteRule "^log4j-docker/index\.html$" "log4j-docker.html" [R=permanent]
+RewriteRule "^log4j-flume-ng/index\.html$" "log4j-flume-ng.html" [R=permanent]
+RewriteRule "^log4j-iostreams/index\.html$" "log4j-iostreams.html" [R=permanent]
+RewriteRule "^log4j-jakarta-web/index\.html$" "log4j-jakarta-web.html" [R=permanent]
+RewriteRule "^log4j-jcl/index\.html$" "log4j-jcl.html" [R=permanent]
+RewriteRule "^log4j-jmx-gui/index\.html$" "log4j-jmx-gui.html" [R=permanent]
+RewriteRule "^log4j-jpl/index\.html$" "log4j-jpl.html" [R=permanent]
+RewriteRule "^log4j-jul/index\.html$" "log4j-jul.html" [R=permanent]
+RewriteRule "^log4j-mongodb3/index\.html$" "log4j-mongodb3.html" [R=permanent]
+RewriteRule "^log4j-mongodb4/index\.html$" "log4j-mongodb4.html" [R=permanent]
+RewriteRule "^log4j-slf4j-impl/index\.html$" "log4j-slf4j-impl.html" [R=permanent]
+RewriteRule "^log4j-slf4j2-impl/index\.html$" "log4j-slf4j2-impl.html" [R=permanent]
+RewriteRule "^log4j-spring-boot/index\.html$" "log4j-spring-boot.html" [R=permanent]
+RewriteRule "^log4j-spring-cloud-config/index\.html$" "log4j-spring-cloud-config.html" [R=permanent]
+RewriteRule "^log4j-spring-cloud-config-client/index\.html$" "log4j-spring-cloud-config-client.html" [R=permanent]