DirectoryIndex index.html

RewriteEngine On

# Redirect direct .html requests to clean URLs.
RewriteCond %{THE_REQUEST} \s/+index\.html[\s?] [NC]
RewriteRule ^index\.html$ ./ [R=301,L]

RewriteCond %{THE_REQUEST} \s/+(.+?)\.html[\s?] [NC]
RewriteRule ^(.+)\.html$ $1 [R=301,L,NE]

# Avoid duplicate trailing-slash versions for clean page URLs.
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} .+/$
RewriteRule ^(.+)/$ $1 [R=301,L]

# Serve matching .html files behind extensionless URLs.
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+)$ $1.html [L]
