Report this

What is the reason for this report?

unable to remove .php from file extension with .htaccess

Posted on July 9, 2016

I have the following in my .htaccess file. Redirecting the www. works perfectly, as does the custom 404 message. The removal of .php from the file extension fails to work. domain.com/file returns the 404 message, with domain.com/file.php working fine.

RewriteEngine On
RewriteBase /

#
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

#
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^\.]+)/$ $1.php

#
ErrorDocument 404 /404.php

Also if it helps this is in my 000-default.conf filed

        <Directory /var/www>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Turns out it was multiviews that was causing the problem. After I checked the error logs and searched on the error message I was receiving I found the following article.

http://www.bennadel.com/blog/2218-negotiation-discovered-file-s-matching-request-none-could-be-negotiated.htm

Here is what you would need to add your htaccess file

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

Make sure you have allowed such changes in your Apache configuration:

<Directory /var/www>
    Options Indexes FollowSymLinks Multiviews
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>

If you are in another folder, change /var/www to whaterver your folder path is.

The above changes should be in your domain’s Apache config as mentioned. /etc/apache2/sites-available/yourDomain.conf

When you make any changes to an apache2 conf file, you have to restart apache2. Also make sure mod_rewrite is available.

sudo a2enmod rewrite && sudo service apache2 restart

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.