.htaccess not removing file extensions

Posted February 5, 2018 4k views

So here is the link in question:

The setup of my .htaccess file is as follows:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html
ErrorDocument 404 /404.html

So it should be removing the .html part, but when you navigate to the link, it errors:

Any thoughts or suggestions?

edited by kamaln7

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.

Submit an Answer
1 answer

The rules look fine to me, so I’m suspecting that Apache isn’t reading the .htaccess file in the first place. That could happen if it is not configured to do so. Open your VirtualHost config (usually /etc/apache2/sites-enabled/file) and make sure AllowOverride is set to All like so:

     <Directory /var/www/html>
        Options FollowSymLinks
        AllowOverride all
        Require all granted

Restart Apache so that the changes take effect.

  • I’ve edited that conf file to read:

    <VirtualHost *:80>
    DocumentRoot /var/www/
    ErrorLog ${APACHE
    CustomLog ${APACHE
    LOG_DIR}/access.log combined
    <Directory /var/www/html>
    Options FollowSymLinks
    AllowOverride all
    Require all granted

    and restarted apache2, but still nothing. :c

    • Almost there! You just need to update the Directory block to match your DocumentRoot:

       <Directory /var/www/>

      That should hopefully get the .htaccess file to work