Redirecionamento canônico em hosts virtuais de massa dinâmica no Apache

Redirecionamento canônico em hosts virtuais de massa dinâmica no Apache

Eu tenho um aplicativo Web no Apache que permite aos usuários apontar seus domínios para o servidor.

No momento estou usando hosts virtuais de massa dinâmica do Apache com uma entrada VirtualDocumentRoot /www/hosts/%0/docs

Portanto, com www.companydomain.com aponta para /www/hosts/www.companydomain.com/docs

O problema é que quando o usuário acessa companydomain.com ele apontará para /www/hosts/companydomain.com/docs

Existe uma maneira fácil de fazer com que o Apache verifique automaticamente se existe um diretório para o host virtual e, se não, procure o nome do host com "www". na frente dele? Outros subdomínios são adequados (ou seja, abc.domain.com deve apontar para um diretório diferente de def.domain.com), mas todo o problema do "www" é um mistério para mim.

Estou usando hosts virtuais de massa dinâmica para que o servidor não precise reiniciar após cada registro do aplicativo. Se houver uma maneira diferente, tudo bem, desde que o Apache não seja reiniciado todas as vezes.

Como posso fazer isso? Na pior das hipóteses, se houvesse uma maneira de redirecionar para um local "padrão" no servidor, se não fosse encontrado, eu sempre poderia fazer uma verificação via PHP ou algo assim, mas sinto que isso é um pouco hackeado e deve haver um método mais eficiente caminho.

Desde já, obrigado!

Responder1

Acho que examinaria a -d directoryopção RewriteCond para testar se existe um diretório para este vhost e, se não existir, redirecione explicitamente para www.example.com. Isso permite que as pessoas não fiquem chocadas ao receber uma página que não esperavam e evita a indexação múltipla pelos mecanismos de pesquisa.

Responder2

linha 458 de módulos/mappers/mod_vhost_alias.c

if (strncasecmp(name,"www.",4) == 0) {
    name+=4;
}

informação relacionada