Eu tenho o domínio example.com
e configurei o servidor Ubuntu Apache de forma que aponte qualquer subdomínio para um diretório com o mesmo nome.
<VirtualHost *:80>
ServerAlias *.example.com
VirtualDocumentRoot /var/www/html/%1
</VirtualHost>
Então subdomain.example.com
apontará para example.com/subdomain
.
Estou tentando permitir que os usuários apontem seu próprio domínio personalizado para um subdomínio de sua escolha, como eu poderia conseguir isso e quais registros seriam necessários e o que teria que ser feito para oAnfitrião virtual?
Eu tentei o seguinte registro:
sampledomain.example
(CNAMEregistro) -@
-->sample.example.com
sampledomain.example
(Aregistro) -@
--> (IP
Endereço de example.com)
Também tentei usar www
o CNAME junto com a remoção do arquivo A record
.
sample.example.com
aponta com sucesso para example.com/sample
. No entanto, sampledomain.example
atua como o site raiz por algum motivo.
Portanto, se eu visitar sampledomain.example/sample
, obterei o conteúdo example.com/sample
em vez de apontar sample.example.com
.
Como eu poderia resolver isso? Quais registros seriam necessários e o que poderia ser feito no Host Virtual?
Usei um registro CNAME para poder recuperar o nome de domínio personalizado via PHP quando o usuário o visitar - o CNAME é necessário?
Responder1
Se você concordar em fazer isso manualmente mediante solicitação do seu cliente, isso é fácil. Tudo que você precisa fazer é adicionar ServerAlias sampledomain.com
à configuração do vhost e recarregar a configuração do servidor web.
No entanto, se você quiser que seus clientes façam isso sozinhos em algum tipo de interface de controle do cliente, isso não será facilmente alcançado devido à forma como os hosts virtuais em um servidor web funcionam. Aqui está o porquê:
Se você tiver algum registro DNS (independentemente de A
ou CNAME
) mapeado sampledomain.com
para o seu servidor web, o navegador enviará uma solicitação ao endereço IP do seu servidor com o Host
cabeçalho HTTP definido como sampledomain.com
. O servidor web usará este cabeçalho para decidir qual host virtual deve lidar com isso e se sampledomain.com
não for um nome de vhost nem um alias, a solicitação será respondida pelo vhost padrão como você já experimentou.
Para tornar isso possível, você precisa de uma maneira para que seus clientes configurem aliases para seus vhosts. Com o Apache, isso não é fácil, mas em teoria você pode ler isso em um banco de dados, conforme explicadoaqui(Nunca tentei isso, então não tenho ideia se funciona).
Além disso, coisas comoVirtualMinpode ser útil nesse caso.