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
.RewriteRule "^/?(.*)" "http://%{HTTP_HOST}/%{HTTP_HOST}/$1" [L,R,NE]
Você pode permitir todos os subdomínios em primeiro lugar e depois verificar se o subdomínio é válido. Por exemplo:
Dentro do que
index.php
você pode extrair o subdomínio usando:Mas tudo isso requer que seu servidor da web aceite todos os nomes de subdomínios.
fonte
Além de configurar um curinga DNS, você pode dar uma olhada no Dynamic Mass Virtual Hosting for Apache, que foi como eu resolvi isso no passado
fonte
Achei mais fácil fazê-lo com PHP. De fato, está criando um subdomínio no cPanel e crie sua pasta com o nome de domínio desejado. Como você faz manualmente no cPanel, mas tudo é feito em milissegundos por uma simples função PHP. Não é necessário clicar :)
fonte
A maneira mais fácil é redirecionar todos os subdomínios (com curinga *) para apontar para o seu / wwwroot. Em seguida, coloque .htaccess nesta pasta com o seguinte código:
Isso fará com que todas as subpastas da pasta / wwwroot sejam aceitáveis via subdomínio (nome_do_domínio.domínio.com).
Encontrado este ano atrás em http://www.webmasterworld.com/apache/3163397.htm
fonte
Não tem nada a ver com .htaccess. Você precisará configurar registros DNS e hospedagem virtual para os subdomínios.
fonte
Mod_vhost_alias é o módulo certo para fazer isso.
Com uma linha, você pode dizer ao Apache para procurar o lugar certo, com hash de diretório, etc. Por exemplo, a linha:
diria ao Apache para definir a raiz do documento como / http / users / s / u / subdomínio quando solicitado para subdomínio.seudominio.com
fonte
Eu acho que o DNS do curinga com o Dynamic Mass Virtual Hosting da Apache também é uma solução razoável. Embora, eu nunca tentei.
Se você precisar expandir para vários servidores ou outras soluções simplesmente não funcionarem, recomendo usar um servidor DNS orientado a banco de dados. Eu usei o MyDNS com sucesso no passado. Como ele usa MySQL (ou PostgreSQL), você pode atualizar seu DNS rapidamente com PHP ou qualquer outra coisa. O código não parece ter sido atualizado há algum tempo, mas é DNS e, portanto, não é exatamente de ponta.
fonte
Métodos de criação de subdomínio curinga
Primeiro, você precisa criar as configurações de DNS usando o editor de DNS do servidor.
Crie um
A
registro nas configurações de DNS com o*
curinga do host no endereço IP do servidor.* 1400 IN A ip_address
Crie mais uma vez um
A
registro nas configurações de DNS com o host@
oudomain_name.tld
no endereço IP do servidor. tld significa domínios de nível superior ou a extensão de domínios como .com, .org, etc.@ 1400 IN A ip_address
oudomain_name.tld 1400 IN A ip_address
Crie um
CNAME
registro como:www 1400 IN A domainname.tld
*
curinga como*.domain.tld
Crie o htaccess no diretório do seu subdomínio
*.domain.tld
e coloque este código:Teste seu primeiro subdomínio curinga como
example.domainname.tld
Se você não tiver interesse em passar os dados como parâmetro usando o htaccess, também poderá obter os dados usando a seguinte codificação:
e use sua variável global em qualquer lugar como
global $get_data
.(note: Essa classe é usada principalmente para obter o nome do subdomínio exato de
http_host
., porque alguns nomes extras combinados antes do seu subdomínio também são aplicáveis, comowww.example.domainname.tld
. Este retorno$_GET['data']='wwww'
Então, minha sugestão é usar o$_SERVER['http_host']
para obter os valores exatos em vez de usar o$_SERVER['query_string']
parâmetros ou passados htaccess em sua página de índice)6.A acelerar a execução desses subdomínios curinga, use N segundos em TTL - DNS SETTINGS.
7. Verifique o subdomínio após o tempo ttl (600 a 10 minutos), como =>
http://abc.domain.tld
(observação: os subdomínios curinga não substituem os subdomínios existentes. Como a primeira prioridade sempre para os subdomínios existentes)
fonte