Removing .html extension from URLs with Apache



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

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]

1 Elsewhere

1.1 In my garden

Notes that link to this note (AKA backlinks).

1.2 In the Agora

oi oi
This page last updated: 2021-11-27 Sat 12:32. Map. Recent changes. Source. Peer Production License. Webring: << random >>