Como apontar qualquer variação * .mydomain para localhost (para desenvolvimento)?

2

Estou desenvolvendo um site que fará uso de qualquer parte do nome do subdomínio [variação de] (ou seja, a parte prefixada antes do nome do host e, opcionalmente, a parte do TLD). Eu imagino que na produção, isso seria uma tarefa fácil - certifique-se de que o DNS para o nome do domínio de segundo nível aponte para um IP, configure o host virtual Apache2 para escutar nessa (ou qualquer outra) porta IP 80 e apenas use PHP para tomar decisões com base no cabeçalho de solicitação "Host".

No entanto, atualmente o site é localhost, já que estou desenvolvendo-o usando minha estação de trabalho, então primeiro atualizei o / etc / hosts para incluir:

127.0.0.1 mydomain

Eu usei apenas uma parte do nome (sem dúvida, um TLD personalizado) para não interferir nos nomes de domínio da Internet. Então eu configurei uma diretiva VirtualHost para o Apache 2.2 como:

<VirtualHost *:80>
    ServerName mydomain

Mas agora eu posso ver que f.e. example.mydomain não aponta para localhost, o que significa que a adição de / etc / hosts não é efetiva para "something.mydomain". Parece que as regras são tomadas literalmente, e também verifiquei que curingas como * .mydomain não são permitidas.

Existe uma solução para isso?

    
por amn 23.04.2010 / 20:23

1 resposta

5

Se você estiver no Linux (e eu suponho que você é, desde que você mencionou / etc / hosts), você pode tentar dnsmasq para isso. Eu o uso às vezes para testes rápidos e substituições de DNS locais.

Passos obrigatórios:

  1. Instale o dnsmasq
  2. Configure sua estação para usar o dnsmasq para resolução de DNS.

    Edite /etc/resolv.conf e coloque:

    nameserver 127.0.0.1
    

    O efeito colateral disso é o cache DNS local, que normalmente é outro mais (embora esteja ciente disso).

  3. Modifique a configuração do dnsmasq .

    Edite o /etc/dnsmasq.conf :

    address=/example.com/127.0.0.1
    

    Você precisa colocar o domínio raiz aqui, ele deve resolver todos os subdomínios para localhost dessa maneira.

  4. Reinicie dnsmasq

  5. Confirme com host example.com e host subdomain.example.com . Ambos devem estar apontando para localhost .

por 23.04.2010 / 20:58