ServerAlias não está funcionando

2

Eu tenho um VPS, que configurei para hospedar vários sites com hospedagem baseada em nome. Está tudo bem, apenas usando example.com e www.example.com . Ele também funciona com example.net , mas quando eu tento example.net , ele volta para a configuração do meu padrão , que mostra apenas o padrão (vazio) index.html página.

Este é o arquivo padrão:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

Veja uma configuração para o site example.com :

    <VirtualHost *:80>
     ServerAdmin [email protected]
     ServerName example.com
     ServerAlias www.example.com
     DocumentRoot /srv/www/example.com/public_html/
     ErrorLog /srv/www/example.com/logs/error.log
     CustomLog /srv/www/example.com/logs/access.log combined
<Directory /srv/www/example.com/public_html/>
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>

E aqui está a configuração do site example.net :

<VirtualHost *:80>
     ServerAdmin [email protected]
     ServerName example.net
     ServerAlias www.example.net
     DocumentRoot /srv/www/example.net/public_html/
     ErrorLog /srv/www/example.net/logs/error.log
     CustomLog /srv/www/example.net/logs/access.log combined
<Directory /srv/www/example.net/public_html/>
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>

Onde poderia estar o problema?

Eu acredito que há algo errado com a propriedade ServerAlias.

Poderia ser por causa da maneira como o site é construído? Porque example.com é um site Joomla , e example.net é um site do Zend Framework. Apenas no caso, eu também inserirei os arquivos .htaccess para example.net , já que example.com está desativado: example.net :

SetEnv APPLICATION_ENV development

RewriteRule  ^(browse|config).*  - [L]
ErrorDocument 500 /error-docs/500.shtml
SetEnv CACHE_OFFSET 2678400


<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Expires "Fri, 25 Sep 2037 19:30:32 GMT"
Header unset ETag
FileETag None
</FilesMatch>

RewriteEngine On
RewriteRule ^(adm|statistics) - [L]
RewriteRule ^/public/(.*)$ http://example.net/$1 [R]
RewriteRule ^(.*)$ public/$1 [L]

Qualquer ajuda seria muito apreciada!

Editar Para que minha pergunta seja ABSOLUTAMENTE clara: O problema é que um site funciona com o prefixo www , bem como sem o segundo, e o segundo não. Gostaria de saber como ativar o segundo site para trabalhar com o prefixo www .

    
por Janis Peisenieks 13.12.2010 / 17:09

3 respostas

3

Verifique se a ordem de precedência nas diretivas de configuração corresponde ao modo como o Apache deve lidar com a solicitação, ou seja, você não terá muita sorte se as diretivas forem carregadas assim:

  • example.com
  • padrão / catch-all
  • universal.lv

Não importa se eles são declarados em um único arquivo ou em vários arquivos - desde que "universal.lv" seja o último, ele não será alcançado porque o vhost padrão / catch-all o precederá.

Eu geralmente nomeio minha configuração padrão / catch-all "z-default.conf" (ou, se você tem um domínio que começa com um "z", "zz" ... etc) por esse motivo, para garantir que é processado somente se nenhum outro vhost corresponder.

Tente renomear de acordo.

Atualizado: para não confundir com a diretiva _default_ VirtualHost

Usando DNS curinga para direcionar todas as solicitações para example.com para o IP do servidor (captura subdomínios mal-intencionados), O Apache analisa os seguintes arquivos de configuração:

  • 000-default.conf - VirtualHost _default_:80 / ServerName <hostname> - captura solicitações contra o IP do servidor (pode redirecionar para o domínio principal ou simplesmente bloquear com o padrão Directory especificado em conf.d/security )
  • example.conf - VirtualHost *:80 / ServerName www.example.com
  • example2.conf - VirtualHost *:80 / ServerName www.example2.com
  • zzz-example.conf - VirtualHost *:80 / ServerName example.com / ServerAlias *.example.com - redireciona para o domínio www canônico
  • zzz-example2.conf - VirtualHost *:80 / ServerName example2.com / ServerAlias *.example2.com - redireciona para o domínio www canônico

Conforme documentado, o Apache seleciona o primeiro VirtualHost correspondente (ou seja, _default_:80 ), mas esse comportamento não é desejável se você estiver usando um curinga em uma diretiva ServerAlias .

    
por 13.12.2010 / 18:15
0

você precisa ter o NameVirtualHost ativado no httpd.conf - então você pode definir múltiplos hosts virtuais no mesmo ip: port.

    
por 13.12.2010 / 17:22
0

Eu recomendo que você leia a documentação do Apache em Hosts Virtuais primeiro.

Um excelente exemplo foi dado no link :

NameVirtualHost *:80

<VirtualHost *:80>
ServerName www.domain.tld
ServerAlias domain.tld *.domain.tld
DocumentRoot /www/domain
</VirtualHost>

<VirtualHost *:80>
ServerName www.otherdomain.tld
DocumentRoot /www/otherdomain
</VirtualHost>

Observe a parte NameVirtualHost . Seu log de erros (/var/log/apache2/error.log) deve ter avisado que você cometeu um erro possível.

Nota: após uma alteração no arquivo de configuração, o Apache precisa ser reiniciado.

    
por 13.12.2010 / 17:43