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:

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 in the garden

Notes that link to this note (AKA backlinks).

This page last updated: 2020-10-05 Mon 22:59. Map. Recent changes. Source. Peer Production License. Webring: << random >>