In this blog post, we saw how to remove the file extension from URL.
Now, let's see how to keep extension for some files as some of they might be getting data from _POST methods and sometimes errors can occur while redirecting those pages.
To remove the extension we saw the following code in this blog post.
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /.*index HTTP/
RewriteRule ^(.*)index$ http://your-domain-name.com/$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ http://your-domain-name.com/$1 [L,R=301]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /(.+).php HTTP/
RewriteRule ^(.+).php$ http://your-domain-name.com/$1 [L,R=301]
RewriteRule ^([a-z]+)$ /$1.php [L]
The code above will remove all the PHP file extensions from your website URLs.
Now, let's assume you have one URL named "get-user-data.php" and you want to skip that file from removing the extension. Just add the following line to your htaccess code.
RewriteCond %{REQUEST_URI} !^/get-user-data.php$
Just add that line into the code above and change the name and extension according to your file name and extension and you're good to go.
Also, I know I have already discussed this in this blog post, but don't forget to add the following code to your htaccess file OR your server will have problems allowing files without extensions.
Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+)$ /$1.php [L,QSA]
apache htaccess rewrite rules