2

I am developing a site, which will make use of any given [variation of] subdomain name part (that is, the part prefixed before the host name and, optionally, the TLD part). I would imagine that in production, that would be an easy feat - make sure the DNS for second-level domain name part points to an IP, set up Apache2 virtual host to listen on that (or any) IP port 80, and just use PHP to make decisions based on the "Host" request header.

However, currently the site is localhost, since I am developing it using my workstation, so first I patched the /etc/hosts to include:

127.0.0.1 mydomain

I only used one name part (arguably a custom TLD) so as to not interfere with the Internet domain names. Then I set up a VirtualHost directive for Apache 2.2 like:

<VirtualHost *:80>
    ServerName mydomain

But now I can see that f.e. example.mydomain does not point to localhost, meaning the the /etc/hosts addition is not effective for "something.mydomain". It appears the rules are taken verbatim, and also I have checked that wildcards like *.mydomain are not allowed.

Is there a solution for this?

1 Answer 1

5

If you are on Linux (and I assume you are, since you mentioned /etc/hosts), you can try dnsmasq for this. I use it at times for quick testing and local DNS overrides.

Steps required:

  1. Install dnsmasq
  2. Configure your station to use dnsmasq for DNS resolution.

    Edit /etc/resolv.conf and put:

    nameserver 127.0.0.1
    

    The side effect of this is local DNS caching, which normally is another plus (though be aware of this).

  3. Modify dnsmasq configuration.

    Edit /etc/dnsmasq.conf:

    address=/example.com/127.0.0.1
    

    You need to put the root domain here, it should resolve all subdomains to localhost this way.

  4. Restart dnsmasq

  5. Verify with host example.com and host subdomain.example.com. Both should be pointing to localhost.

4
  • Thanks Karol. That did the trick. HOWEVER, requests for resolving "mydomain" (without any prefix) don't work without also specifying "mydomain 127.0.0.1" in /etc/hosts, which suggests that dnsmasq interprets the syntax as applicable to *.mydomain - i.e. only with a subdomain name part prefixing the dot and the rest. Apr 23, 2010 at 19:16
  • By my side it works without /etc/hosts modifications. Setting example.com redirects *.example.com and example.com too. But maybe there's some limitation here about TLDs, I don't know. Are you using literal mydomain? ;-) Maybe mydomain.localnet would work? Apr 23, 2010 at 19:30
  • @user41339 - the correct response to a good answer that fixes your problem is to check the checkmark beside the vote count. An upvote is also a good present if you haven't done so. Apr 23, 2010 at 19:43
  • I know, I know :-) Apr 30, 2010 at 11:03

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .