Pergunta

Eu tenho vários domínios que eu gostaria de ter subdomínios curinga habilitado para através mod_vhost_alias

incluído no meu httpd.conf Eu tenho as seguintes regras generalizadas:

<VirtualHost [ip here]:80>
    ServerName domain1.com
    ServerAlias www.domain1.com
    DocumentRoot /home/user1/public_html
</VirtualHost>
<VirtualHost [ip here]:80>
    ServerName *.domain1.com
    VirtualDocumentRoot /home/user1/subdomains/%-3+
</VirtualHost> 

<VirtualHost [ip here]:80>
    ServerName domain2.com
    ServerAlias www.domain2.com
    DocumentRoot /home/user2/public_html
</VirtualHost>
<VirtualHost [ip here]:80>
    ServerName *.domain2.com
    VirtualDocumentRoot /home/user2/subdomains/%-3+
</VirtualHost>

O problema é que o Apache está ignorando completamente os VirtualHosts com os ServerNames curinga. Qualquer pedido de test.domain1.com ou test.domain2.com só vai mostrar o conteúdo de / home / user1 / public_html (a regra padrão de acordo com apache).

Algumas outras informações:

/home/user1/subdomains/test e /home/user2/subdomains/test ambos existem e têm arquivos neles

Todos os meus domínios têm um subdomínio curinga listados na configuração do ligamento, e eles estão apontando para o mesmo IP especificado nas regras VHost. Padrão VHost regras para subdomínios trabalho, mas não curinga.

A versão da saída do httpd -S cortou

# httpd -S
VirtualHost configuration:
[ip here]:80      is a NameVirtualHost
         default server domain1.com (/etc/httpd/sites/user1:1)
         port 80 namevhost domain1.com (/etc/httpd/sites/user1:1)
         port 80 namevhost *.domain1.com (/etc/httpd/sites/user1:14)
         port 80 namevhost domain2.com (/etc/httpd/sites/user2:1)
         port 80 namevhost *.domain2.com (/etc/httpd/sites/user2:14)
Syntax OK
# httpd -M
Loaded Modules:
 core_module (static)
 mpm_prefork_module (static)
 http_module (static)
 so_module (static)
 rewrite_module (shared)
 auth_basic_module (shared)
 authz_host_module (shared)
 include_module (shared)
 log_config_module (shared)
 logio_module (shared)
 mime_magic_module (shared)
 mime_module (shared)
 vhost_alias_module (shared)
 dir_module (shared)
 suexec_module (shared)
 php5_module (shared)
 suphp_module (shared)
 ssl_module (shared)
Syntax OK

Todas as sugestões quanto ao que o problema é seria muito apreciada.

Foi útil?

Solução

Eu sou um noob, era uma verdadeira solução simples.

ServerName não permite wildcards, mas ServerAlias faz, então eu só duplicado o nome do servidor novamente.

Aqui está a configuração minimizado final para domínios qualquer um que acontece para encontrar essa resposta (eu odeio quando você pesquisa no Google e encontrar perguntas, mas nenhuma resposta):

<VirtualHost [ip here]:80>
    ServerName domain1.com
    ServerAlias www.domain1.com
    DocumentRoot /home/user1/public_html
</VirtualHost>
<VirtualHost [ip here]:80>
    ServerName domain1.com #<-- The fix. Wildcards not supported in ServerName
    ServerAlias *.domain1.com
    VirtualDocumentRoot /home/user1/subdomains/%-3+
</VirtualHost>

Outras dicas

David, esta solução que interrompe ciclo mod_rewrite quando o sucesso será útil para o seu problema).

Reescreva rolha de round-robin:

RewriteCond %{ENV:REDIRECT_STATUS} 200|[45]0[0-9]
RewriteRule .* - [L]
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top