• 27 Jun, 2025

How to Remove .php, .html, .htm Extensions with .htaccess (SEO-Friendly URLs)

How to Remove .php, .html, .htm Extensions with .htaccess (SEO-Friendly URLs)

Learn how to remove .php, .html, and .htm extensions from URLs using .htaccess. Create clean, SEO-friendly URLs on Apache servers with our step-by-step guide.

How to Remove .php, .html, .htm Extensions Using .htaccess

Want cleaner, more professional-looking URLs for your website? Stripping file extensions like .php, .html, or .htm not only improves SEO and aesthetics, but it also future-proofs your site’s URLs. In this tutorial, we’ll show you how to use .htaccess to hide file extensions from your URLs on Apache servers.

Prerequisites

  • Your site is hosted on an Apache server
  • You have mod_rewrite enabled (usually enabled by default)
  • Basic knowledge of FTP or cPanel file manager

Step 1: Create or Edit Your .htaccess File

  1. Go to your website’s root directory (usually public_html).
  2. Look for a file named .htaccess. If it doesn’t exist, create a new file and name it .htaccess.

Important: Make sure your text editor doesn’t save it as .htaccess.txt.

Step 2: Enable mod_rewrite

Add the following code at the top of your .htaccess file:

RewriteEngine On

Step 3: Remove .php Extension

Add this rewrite rule:

# Remove .php extension
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^/]+)/?$ $1.php [L]

Example: https://example.com/about loads about.php

Step 4: Remove .html and .htm Extensions

Add these rules below the previous one:

# Remove .html extension
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^([^/]+)/?$ $1.html [L]

# Remove .htm extension
RewriteCond %{REQUEST_FILENAME}.htm -f
RewriteRule ^([^/]+)/?$ $1.htm [L]

Examples:

  • https://example.com/contactcontact.html
  • https://example.com/infoinfo.htm

Step 5: Redirect Visitors from Extension URLs to Extension-less URLs (Optional)

This will redirect old URLs like about.php to /about using a 301 redirect:

# Redirect .php to extension-less
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=301,L]

# Redirect .html to extension-less
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.html [NC]
RewriteRule ^ %1 [R=301,L]

# Redirect .htm to extension-less
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.htm [NC]
RewriteRule ^ %1 [R=301,L]

Step 6: Test Your URLs

  • Visit https://yourdomain.com/about
  • Make sure it loads the corresponding about.php, about.html, or about.htm file
  • Old links should redirect correctly if step 5 is included

Troubleshooting

  • 500 Internal Server Error? Check for typos and ensure AllowOverride All is set in Apache config.
  • Changes not working? Clear your browser cache and confirm mod_rewrite is enabled.

Final Thoughts

Removing file extensions using .htaccess makes your URLs look clean, professional, and SEO-friendly. With just a few lines of code, you can enhance your website's usability and maintainability.

Got Questions?

Drop them in the comments or contact me directly. Happy coding!

Y2A Post

Discover the innovative work in AI-generated blogs, seamlessly blending technology with creativity. This unique approach not only offers fresh perspectives on various topics but also ensures that content is engaging and relevant.