Using .htaccess to remove PHP file extension from URL
.htaccess, apache, php, ubuntu
Solution
You don't use htaccess to do this, you use your app to remove the extensions, and htaccess to map extension-less urls to real files. This rule
# Remove file extension
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) $1.php [L]
Says, "if the requested resource doesn't exist as a file, look for the resource with a `.php` extension". So you remove the extension from all links in your app, and this rule will make the php file run without the extension. Your htaccess is fine as-is, you need to update your app.
Problem
I just finished installing a LAMP stack on Ubuntu 12, and have run into an issue with Apache's .htaccess file. I have the rewrite and redirect mods enabled, and the .htaccess file is working (the URI will redirect to 'www' if there is no 'www' present), but no matter what I try, I cannot get it to remove file extensions. I've tried the `<Files>` directive with no luck. My current file consists of the following: ``` RewriteEngine On # Remove file extension RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule (.*)$ $1.php [L] # Force www RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] ``` Any suggestions on how to fix this very annoying problem?