Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save gnidustotalus/ae6e31324e7f975bd8433f49a5ec906f to your computer and use it in GitHub Desktop.
Save gnidustotalus/ae6e31324e7f975bd8433f49a5ec906f to your computer and use it in GitHub Desktop.
Apache: Hide HTML extension in URLs with htaccess
# This tag loads the rewrite module
<IfModule mod_rewrite.c>
# enable the rewrite engine
RewriteEngine On
# Set your root directory
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>
# ------------- alternative remove .html version, 2020 -------------------
#remove html file extension https://example.com/page.html
# to https://example.com/page
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC, L]
The search engine may index these pages as duplicate content,
to overcome this add a <canonical> meta tag in the HTML file.
Example:
<link rel="canonical" href="https://example.com/blog/first-blog" />
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment