Apache is running the site fine.
The way apache virtual hosts work is to look at the "host" header in the http request to work out which virtual host to route the request to. When you use a web browser to access virtual.site.com, your computer does a DNS lookup on virtual.site.com to find the IP address associated with that DNS record, and then sends the request to that IP address with the http host header set to "virtual.site.com", which lets the servers know that it should serve the site virtual.site.com, even if there are multiple sites on that IP address. If the host header isn't set, or if apache doesn't have a virtual site for that host, it serves the default site. In your case, this is
http://www.devhaus.co.uk.
If I make a request to 176.58.108.244 (your IP address) and modify the host header to be "www.shape-shift-test.co.uk" I get served the site as expected (at the moment all the site consists of is a 500 error saying it couldn't connect to the database).
I'm unsure as to why /etc/hosts isn't working as you want, however I have experienced /etc/hosts causing a lot of issues with apache, so maybe that'd explain it. It may also be useful to see a dump of your /etc/hosts file.
If you want to modify your headers yourself, so as to access the site remotely, you can use a tool such as
https://addons.mozilla.org/en-US/firefo ... y-headers/ (I expect chrome also has similar addons).
You can also do something similar with curl. I believe the usage is something along the lines of:
Code:
curl -H 'Host: www.shape-shift-test.co.uk' http://176.58.108.244/