I want www.example.com/about.php to just be www.example.com/about
I created an .htaccess file and placed it in the root of my server. I am using linux shared hosting
Pasted above everything in my .htaccess file worked for me...
## 301 Redirects
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(.*)\.asp$ $1? [R=301,NE,NC,L]
Use this code for hiding/removing .php
extension:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
## hide .php extension
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]
## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]
Your rewrite rule isn't correct, it's the wrong way round. Try this instead:
RewriteRule ^(.*).php$ /$1 [L,R=301]
I had this problem also, but I found that this seemed to fix the GoDaddy .htaccess problem.
# Fix Rewrite
Options -Multiviews
# Mod Rewrite
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
So after a long bout with google I finally figured this one out. This works with Godaddy shared hosting. It removes php file extensions so http://yoursite.com/about.php becomes http://yoursite.com/about
Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f #If requested is not a filename...
RewriteCond %{REQUEST_FILENAME} !-d #And not a directory
RewriteRule ^(.*)$ $1.php [L] # perform this redirect
(remove comments before uploading to server)