How to setup virtual host for Apache 2.4/ubuntu 13.10 and above?

.htaccess, apache, mod-rewrite, ubuntu, virtualhost

Solution

The problem was that with Apache 2.4/ubuntu 13.10 and above the sites-available files are like `name.conf` instead of

sudo cp default our-test-siteof

I did it like so

sudo cp default.conf our-test-site.conf

And so on.

Problem

I ma having difficulty setting virtual host after updating ubuntu to 13.10!! this is what i tried: Fire up the terminal and type: ``` sudo a2enmod vhost_alias ``` If you did not get any error messages and your return looks like below, you are on the right track. ``` Enabling module vhost_alias. Run '/etc/init.d/apache2 restart' to activate new configuration! ``` Next thing to do is to go to sites-available directory by typing ``` cd /etc/apache2/sites-available/ ``` OK, now we are in apaches directory where all the definition files for virtual hosts are. We want to copy the default template one, cryptically named default ``` sudo cp default our-test-site ``` This will create a copy of the default template named our-test-site (you of course should substitute this with anything you wish). Let’s edit it, type ``` sudo gedit our-test-site ``` This will open up the file in the editor, below are the contents of default vhost file (as usual YMMV if you did some customization) ``` ServerAdmin webmaster@localhost DocumentRoot /var/www Options FollowSymLinks AllowOverride None Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/access.log combined Alias /doc/ "/usr/share/doc/" Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 ``` We need to add one line and edit two lines. Add ServerName our-test-site.local just above the DocumentRoot directive (in front of line 4). Edit DocumentRoot /var/www path on line 4 and set it to /path-to-the-test-site-WITHOUT-trailing-slash. It should look something like this ``` DocumentRoot /path-to-the-test-site-WITHOUT-trailing-slash ``` In case you did not notice my subtle hints, there should NOT be a trailing slash at the end of the path. Edit path on line 9 and set it to /path-to-the-test-site-WITH-trailing-slash/. It should look something like this ``` DocumentRoot /path-to-the-test-site-WITHOUT-trailing-slash ``` In case you did not notice my subtle hints, there SHOULD be a trailing slash at the end of the path. And there you have it, almost done, the virtual host file is setup. Enable it by typing ``` sudo a2ensite our-test-site ``` The response should look like this ``` Enabling site our-test-site. Run '/etc/init.d/apache2 reload' to activate new configuration! ``` At this point the virtual host setup is done, all that is left is to tell the server that our-test-site.local should be resloved to 127.0.0.1. We do that by typing ``` sudo gedit /etc/hosts ``` and adding 127.0.0.1 our-test-site.local after the localhost (line 1). The entire hosts file should look like ``` 127.0.0.1 localhost 127.0.0.1 our-test-site.local 127.0.1.1 ubuntu-vm # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts ``` Save it, close the editor and finally type ``` sudo /etc/init.d/apache2 restart ``` or ``` sudo apache2ctl restart ``` So there you go, your virtual host is setup, open the browser and type http://our-test-site.local and enjoy. Update: In case you encounter problems accessing the content of the localhost, you should add the ServerName localhost into your default virtual host (as described above for the new virtual host). Then disable and enable site, and restart the apache ``` sudo a2dissite default sudo a2ensite default sudo /etc/init.d/apache2 restart ``` Update 2: In your new virtual host file you should change your ``` AllowOverride None ``` to ``` AllowOverride All ``` for your first two directory nodes (the / one and the one with the path to your site). That will allow all the .htaccess files to work properly and allow redirection. And of course do not forget to ``` sudo a2dissite our-test-site sudo a2ensite our-test-site sudo /etc/init.d/apache2 restart ```

Original source