Removing .html extension from URLs with Apache

*

(Apache)

There's loads of snippets for doing this knocking around on the web. This one worked best for me:

https://gist.github.com/davidvandenbor/f5a2c18c472ceb68d0dd

I just put it in .htaccess.

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

# Remove the .html extension
    RewriteCond %{THE_REQUEST} ^GET\ (.*)\.html\ HTTP
    RewriteRule (.*)\.html$ $1 [R=301]

# Remove index and reference the directory
    RewriteRule (.*)/index$ $1/ [R=301]

# Remove trailing slash if not a directory
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} /$
    RewriteRule (.*)/ $1 [R=301]

# Forward request to html file, **but don't redirect (bot friendly)**
    RewriteCond %{REQUEST_FILENAME}.html -f
    RewriteCond %{REQUEST_URI} !/$
    RewriteRule (.*) $1\.html [L]
</IfModule>

1. Elsewhere

1.1. In my garden

Notes that link to this note (AKA backlinks).

1.3. Mentions

This page last updated: 2023-03-17 Fri 16:15. Map. Recent changes. Source. Peer Production License.