As often happens, writing an email describing the problem has helped me to find the solution. I'll reply to my question here for the benefit of anyone who has the problem in future. It's all related to how Apache resolves virtual hosts, they have a very long document describing how it works at http://httpd.apache.org/docs/2.0/vhosts/details.html The tricky part is that your default server, which on Debian is probably specified in /etc/apache2/sites-available/default is only the default if NO virtual hosts were matched. If Apache finds a vhost/namevhost match for the IP address that will override the _default_ namevhost even if the name is not correct! In my case, somebody tries to access mail.nti.gov.ng: - the IP address is 216.118.254.115 - Apache looks that address up in its hash of vhost IP addresses and finds it - that IP address has one virtual host listed, opac.nti.gov.ng - opac.nti.gov.ng doesn't match the requested URL but it's the default FOR THAT IP ADDRESS (because it's the only vhost for that IP) - Apache serves up opac.nti.gov.ng instead of what we really wanted The _default_ vhost is only used if Apache receives a request for an IP address that is not mentioned in any vhost/namevhosts. To fix the problem I had to alter /etc/apache2/sites-available/default so that the VirtualHost line is: <VirtualHost _default_:80 mail.nti.gov.ng:80 mail.ntilan:80> This means that for IP address 216.118.254.115 both opac.nti.gov.ng AND mail.nti.gov.ng are listed. The entry for mail.nti.gov.ng will be read first, in /etc/apache2/sites-enabled it's in 000-default which comes before 010-koha, so it is the default. I hope this helps somebody else as the way it works seems fairly counter-intuitive to me. The horrible interactions between different vhosts also makes Debian's efforts to keep config files separate a little pointless. Kevin