Apache: hosts virtuais com vários locais com múltiplas raízes de documentos: é possível?

4

Ok, então aqui está o meu problema: eu configurei um host virtual com um nome de servidor apropriado. Eu também tenho, por exemplo, Squirrelmail e SVN instalado na mesma máquina. Eu quero chegar à página padrão, digitando http: // mydomain, chegar ao meu frontend de email digitando http: // mydomain / mail e meu svn digitando http: // mydomain.no-ip.org / svn.

Heres minha definição de vhost:

<VirtualHost *:80>

ServerName mydomain.no-ip.org

#Default site, accessible by http :// mydomain.no-ip.org/
<Location />
    DocumentRoot "/var/www/alias"   
    DirectoryIndex index.php
</Location> 

#Squirrelmail, accessible by http :// mydomain.no-ip.org /mail  
<Location /mail>
    DocumentRoot /usr/share/squrrelmail     
    Options FollowSymLinks
    <IfModule mod_php5.c>
            php_flag register_globals off
    </IfModule>
    <IfModule mod_dir.c>
         DirectoryIndex index.php
    </IfModule>
    <Files configtest.php>
            order deny,allow
            deny from all
            allow from 127.0.0.1
    </Files>
</Location>

#SVN, accessible by http :// mydomain.no-ip.org /svn
<Location /svn>
    DAV svn
    SVNParentPath "/svnrepo"
    SVNListParentPath On
    AuthType Basic
    AuthName "My SVN Repo"
    AuthUserFile "/svnrepo/htpasswd"
    Require valid-user
</Location>

No entanto, há um problema com esse; ao tentar reiniciar o apache, ele diz que você não pode definir um DocumentRoot dentro de um Location . Portanto, há algo que estou fazendo errado, mas ainda não sei exatamente o que.

Ao navegar pelo serverfault para descobrir se alguém teve um problema semelhante, encontrei um link para os exemplos de vhost do Apache: link , hovever, não consigo descobrir qual exemplo seria o melhor lá.

Para ser honesto, também não sou versado em apache e suas formas, então sei que o que acabei de escrever pode ser, para você, sem sentido, na melhor das hipóteses.

Então, alguém sabe como resolver meu problema, por favor? Qualquer ajuda seria muito apreciada!

    
por user905747 24.02.2012 / 00:05

2 respostas

12

De fato, você não pode ter outro DocumentRoot ; você desejará um Alias .

Elimine o DocumentRoot do bloco <Location> e substitua-o por este (que deve estar fora do bloco <Location> ):

Alias /mail /usr/share/squrrelmail

E vamos aplicar essas configurações do SquirrelMail ao diretório em vez do local; basta trocar as definições na parte superior e inferior do bloco:

<Directory /usr/share/squrrelmail>
    Options FollowSymLinks
    <IfModule mod_php5.c>
            php_flag register_globals off
    </IfModule>
    # etc
</Directory>

Além disso, é improvável que haja configurações de permissões em qualquer lugar que se apliquem ao diretório SquirrelMail. Você provavelmente precisará disso ou similar na seção <Directory /usr/share/squrrelmail> :

Order Allow,Deny
Allow from all
    
por 24.02.2012 / 00:27
-1
  1. Não use virtualhosts para host único, configure a parte "Man server"
  2. Leia sobre a diretiva Alias
por 24.02.2012 / 00:42