O rápido resumo
- Você precisa criar um domínio curinga no seu servidor DNS * .website.com
- Em seguida, no seu contêiner vhost, você também precisará especificar o curinga * .website.com - Isso é feito nos
ServerAlias
DOCs
- Em seguida, extraia e verifique o subdomínio no PHP e exiba os dados apropriados
A versão longa
1. Crie uma entrada DNS curinga
Nas configurações de DNS, você precisa criar uma entrada de domínio curinga , como *.example.org
. Uma entrada curinga é assim:
*.example.org. 3600 A 127.0.0.1
2. Inclua o curinga no vhost
Em seguida, na configuração do Apache, é necessário definir um contêiner vhost que especifique o curinga na diretiva ServerAlias
DOCs . Um exemplo de contêiner vhost:
<VirtualHost *:80>
ServerName server.example.org
ServerAlias *.example.org
UseCanonicalName Off
</VirtualHost>
3. Descubra em qual subdomínio você está no PHP
Em seus scripts PHP, você pode descobrir o domínio procurando na $_SERVER
variável super global. Aqui está um exemplo de como pegar o subdomínio no PHP:
preg_match('/([^.]+)\.example\.org/', $_SERVER['SERVER_NAME'], $matches);
if(isset($matches[1])) {
$subdomain = $matches[1];
}
Usei o regex aqui para permitir que as pessoas acessem seu site via www.subdomain.example.org ou subdomain.example.org.
Se você nunca espera ter que lidar com www. (ou outros subdomínios), você pode simplesmente usar uma substring da seguinte forma:
$subdomain = substr(
$_SERVER['SERVER_NAME'], 0,
strpos($_SERVER['SERVER_NAME'], '.')
);
Hospedagem virtual em massa
A hospedagem virtual em massa é um esquema ligeiramente diferente do anterior, pois você costuma usá-lo para hospedar muitos sites distintos, em vez de tentar usá-lo em um aplicativo, conforme a pergunta.
Documentei meu ambiente de hospedagem virtual em massa com base em mod_rewrite antes em uma postagem no meu blog , que você pode ver se é esse o caminho que deseja seguir. Também existe, é claro, a respectiva página de manual do Apache .
O Apache também possui uma maneira interna de lidar com hospedagem virtual em massa que é um pouco menos flexível que o método mod_rewrite que eu usei. Tudo isso é descrito na página de manual do Apache Dynamic Hosting em massa, configurada dinamicamente .
wildcard subdomains
, consulte minha solução para fazer isso.htaccess
.