Automatizar a criação do subdomínio (xyz.serverfault.com)

2

Qual é a melhor maneira de automatizar a criação de subdomínios (como o Basecamp )?

Meu requisito é um pouco semelhante ao Basecamp, em que os usuários solicitam um subdomínio de uma página e eu os crio para eles a partir da minha lógica de negócios.

Algo como

    
por Quintin Par 20.11.2009 / 16:36

2 respostas

7

Nós usamos a mesma técnica em nosso site. Nossos servidores executam o Apache, MySQL e PHP no Linux.

Nosso registro DNS contém uma entrada de caractere curinga de subdomínio, como o EK já sugerido:

www                      IN A       123.456.789.012
*                        IN CNAME   www

Isso redirecionará todas as solicitações para x.y.yourdomain.com para o mesmo ip de www.seudominio.com.br - também é possível ter subdomínios de subdomínios.

Eu não sei perl, mas no PHP você pode acessar o nome do host a qualquer momento assim:

$_SERVER['HTTP_HOST']

Tenho certeza de que há um equivalente em Perl para acessar o cabeçalho de host da solicitação HTTP. Usamos um arquivo central de script PHP para esse propósito.

Editar: Encontrou algum tempo para fornecer mais detalhes sobre como lidar com esses domínios.

Você pode salvar o subdomínio completo como chave primária em seu banco de dados. Isso garante que os domínios inseridos pelo usuário sejam exclusivos. Você também pode usar essas informações para verificações de disponibilidade durante o registro de seu usuário.

Acho que seu aplicativo pode manipular vários usuários por meio de um ID de usuário ou algo assim. Apenas salve este id de usuário junto com o subdomínio no banco de dados. Agora você pode pesquisar o ID do usuário pelo domínio atual enviado pelo cabeçalho do Host HTTP a qualquer momento.

    
por 20.11.2009 / 17:36
4

defina um curinga no seu domínio para * .seudominio.com.br. Em seguida, no código, o nome do servidor usado está no cabeçalho, basta ler isso para exibir conteúdo personalizado ou redirecionar para uma subpasta, conforme necessário.

    
por 20.11.2009 / 16:47