Apache: manipulação de vários domínios

2

Então eu uso o seguinte esquema para lidar com vários sites no meu apache:

<VirtualHost 192.168.1.100:80>

# get the server name from the Host: header
UseCanonicalName Off

VirtualDocumentRoot /var/www/%0/docs
VirtualScriptAlias /var/www/%0/cgi-bin

</VirtualHost>

Portanto, se um cliente acessar www.example.com, ele apontará para /var/www/www.example.com/doc/, o que é bom. No entanto, e se o cliente for para example.com? Ele apontará para /var/www/example.com/doc, que não é o que queremos.

Então, minha pergunta é: existe algum esquema melhor para isso? Ou o que devo fazer para corrigir o problema?

    
por cache 27.06.2012 / 22:53

1 resposta

2

Isso depende do comportamento que você deseja ver.

Se você quiser que o site www.example.com seja redirecionado para example.com ou vice-versa, isso pode ser implementado em RewriteRule configurações. Por exemplo (estes vão dentro do seu <VirtualHost> ):

# Send www.example.com to example.com
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^/(.*)$ http://example.com/$1 [R=301,L]
# Send www.other.example.com to other.example.com
RewriteCond %{HTTP_HOST} ^www\.other\.example\.com$ [NC]
RewriteRule ^/(.*)$ http://other.example.com/$1 [R=301,L]

Para eliminar o www de cada nome:

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

Se você quiser veicular o conteúdo para os dois nomes, terá algumas opções.

  • Se você sempre tiver um conjunto bastante simples de domínios, altere o docroot construído para não se preocupar com www .

    VirtualDocumentRoot /var/www/%-2/docs
    

    ... que aponta para o docroot em /var/www/example/docs .

  • Se você precisar ser um pouco mais criativo com os subdomínios (como ter um b.example.com e www.b.example.com que apontam para seu próprio site, não o example.com um), os links simbólicos podem ser uma boa abordagem.

    Options +FollowSymLinks
    

    ... e crie um symlink em /var/www/www.example.com apontando para o diretório em /var/www/example.com .

por 27.06.2012 / 23:11