Que configuração (ões) do servidor Apache eu preciso para mapear o nome do diretório para o domínio?

2

Digamos que eu tenha uma pasta ~ / apache / que contenha dois diretórios de sites: www.website1.com www.website2.com

Neste momento, tenho coisas configuradas usando as configurações disponíveis para sites e ativadas por sites, que mapeiam domínios para diretórios. Eu gostaria de fazer com que tudo que eu tenho que fazer é criar um novo diretório e apontar o domínio adequado para o meu servidor.

Vou ser honesto e dizer que sei pouco ou nada sobre as configurações do servidor. Eu acho que preciso de algo ao longo das linhas de

VirtualDocumentRoot ~/apache/%0

em um arquivo de configuração. httpd.conf? apache2.conf? Ou seria melhor colocar isso em uma configuração separada e incluí-lo em uma configuração principal?

    
por loeschg 05.08.2012 / 23:02

1 resposta

4

Você pode preencher completamente a hospedagem virtual baseada em nomes de valas, desativar todos os seus arquivos sites-enabled e colocar VirtualDocumentRoot na configuração principal do servidor.

Provavelmente, o que você precisa fazer é criar um novo vhost em sites-available e criar um link simbólico para sites-enabled normalmente, fazendo com que ele funcione como um todo. A nomeação é significativa; ele precisa ser o primeiro arquivo em ordem alfabética para ser tratado como padrão.

Então:

  • Crie um arquivo alfabético inicial que será carregado primeiro, para ser tratado como padrão, como /etc/apache2/sites-available/0-dynamic .
  • Dê ao novo arquivo vhost algum conteúdo como este:

    <VirtualHost *:80>
        ServerName catchall
        VirtualDocumentRoot /path/to/domains/%0
        <Directory /path/to/domains>
            Order Allow,Deny
            Allow from all
        </Directory>
    </VirtualHost>
    
  • Ativá-lo: a2ensite 0-dynamic . (se o padrão ainda estiver em vigor em /etc/apache2/sites-enabled/000-default , renomeie-o para que ele apareça após o novo em ordem alfabética.

Essa configuração veiculará os sites configurados dinamicamente a partir do VirtualDocumentRoot , mas pode ser substituída e veiculada por um% diferente <VirtualHost> quando esse bloco tiver um ServerName ou ServerAlias que corresponda à solicitação. Isso pode ser útil se as configurações do vhost "geral" não forem apropriadas para domínios específicos.

Edit: (Adicionando algumas coisas que experimentei tentando configurar isso pode ser útil. Todo o crédito vai para o autor original!)

VirtualDocumentRoot

Se você receber um erro dizendo

Invalid command 'VirtualDocumentRoot', perhaps misspelled...

verifique se o módulo vhost_alias está ativado. Se não for, corra

>sudo a2enmod vhost_alias

Como gerenciar o principal www

Adicione as seguintes regras (não se esqueça de substituir o exemplo com seu domínio real) pelo arquivo 0-default para manipular www.example.com e example.com.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

Neste exemplo, o www é removido para todas as solicitações, portanto, o diretório deve ser example.com.

    
por 05.08.2012 / 23:23