.htaccess not being loaded in Ubuntu 14.04 (Apache 2.4.7)

September 12, 2014 6.4k views

I'm trying to use the .htaccess file in Ubuntu 14.04 (Apache 2.4.7).

Here is what my .htaccess looks like

    # 1 YEAR
    <FilesMatch "\.(ico|svg|woff|eot|ttf)$">
    Header set Cache-Control "max-age=31536000, public"

    # 1 WEEK
    <FilesMatch "\.(jpg|png|gif|css|js)$">
    Header set Cache-Control "max-age=604800, public"

    # Add correct content-type for fonts 
    AddType application/vnd.ms-fontobject .eot
    AddType font/ttf .ttf
    AddType font/otf .otf
    AddType font/x-woff .woff
    AddType image/svg+xml .svg

    # Compress compressible fonts
    AddOutputFilterByType DEFLATE font/ttf font/otf image/svg+xml

I enabled mod_rewrite using a2enmod rewrite

Then I edited /etc/apache2/apache2.conf as follows

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

    AccessFileName .htaccess

However the .htaccess file is still not being loaded. If I add gibberish to the .htaccess file everything still works fine. The .htaccess is located in /var/www/.

Here is the output of apache2ctl -S

   VirtualHost configuration:
    *:80                   is a NameVirtualHost
             default server (/etc/apache2/sites-enabled/000-default.conf:1)
             port 80 namevhost (/etc/apache2/sites-enabled/000-default.conf:1)
             port 80 namevhost edmhunters.com (/etc/apache2/sites-enabled/edmhunters.com.conf:1)
                     alias www.edmhunters.com
    ServerRoot: "/etc/apache2"
    Main DocumentRoot: "/var/www"
    Main ErrorLog: "/var/log/apache2/error.log"
    Mutex default: dir="/var/lock/apache2" mechanism=fcntl
    Mutex watchdog-callback: using_defaults
    Mutex rewrite-map: using_defaults
    PidFile: "/var/run/apache2/apache2.pid"
    Define: DUMP_VHOSTS
    Define: DUMP_RUN_CFG
    User: name="www-data" id=33
    Group: name="www-data" id=33

What did I miss here?

1 comment
  • have you checked permissions on the .htaccess to make sure www-data can use it?
    Check your site.config file to make sure it does not have AllowOveride None?

    Put this in your .htaccess and if your site redirects from www.yourdomain.com to yourdomian.com then .htaccess is working:

    #redirect www to website root
    RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
    RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
2 Answers

The isssue was that I was placing the .htaccess file in /var/www/ while my DocumentRoot for my website was pointing to a different directory. Moving the .htaccess file to that folder solved the issue.

I have created my own directory like /home/mydirectory/public_html and i upload the .htaccess in the public_html directory. I am trying to load but it does not work as i required even i had changed in apache2.conf file

Have another answer? Share your knowledge.