In almost every solution of "How to activate htaccess", they say that the /etc/apache2/sites-available/default file needs to be edited. But there isn't such file in Apache 2.4.7
I read somewhere that the new default file is 000-default.conf. So I edited that one and tried to add the line:
AllowOverride All
But Apache2 did not restart correctly and gave an error. From an apache2 documentation, I found that AllowOverride is only allowed under the <Directory>
section. Then I tried adding this:
<Directory "/var/www">
AllowOverride All
</Directory>
And this seems to work. But I am not sure if I should have put /var/www there. Is it a correct way of doing it or will my computer blow up somehow?
tl;dr
Yes it's the correct way.
But to be more semantic: Yes, it's the correct way to allow
.htaccess
to override all directives in the/var/www
directory.As you found out,
AllowOverride
is allowed only under theDirectory
section.Using your example:
This is telling apache, that all configurations can be overridden in the
/var/www
and all its sub-directories (recursively).For a better example, consider you have the following configuration in your virtual host:
And the following directory structure:
What I did here, is create an
.htaccess
in every sub-directory of the/var/www
directory.It usually shouldn't be like so, but this is just for the sake of the example
Comparing the directory structure with the configuration, it means that all
.htaccess
files inside in the/var/www
folder and its sub-directories, excluding the/var/www/uploads
directory and its sub-directories, can override all kinds of directives.But
/var/www/uploads
and its sub-directories can only use the.htaccess
file to override theAllow
,Deny
andOrder
directives.Note: As of apache 2.4 (Which is available by default in 13.10+) the
Allow
,Deny
andOrder
directives were replaced by a single directive namedRequire
.First enable rewrite using this command:
Then restart apache2:
Then go into the
sites-available
folder:Edit the file named
default
and changeAllowOverride none
toAllowOverride All
. There are two lines where this change has to be made.This will make
.htaccess
work in your server VPS.This worked on an Ubuntu 12.04.5 VPS.
In my case, it worked like this:
I had to add the following lines:
So it looks like this:
Here a snippet how to enable htaccess in Apache 2.4 without change the default configuration:
For those running apache 2.4 and not finding "default" look in /etc/apache2/apache2.conf and edit
A common problem i ran into in these tutorials is that there's no default.conf file in
I was able to find the place to change it,but it was the apache2.conf file here
Not really sure if this is a good idea, but it did work for me, and in the environment I'm in it's safe.