Назад | Перейти на главную страницу

Apache: виртуальные хосты с несколькими местоположениями с несколькими корнями документов: возможно ли?

Хорошо, вот моя проблема: я создал себе виртуальный хост с подходящим именем сервера. У меня также, например, установлены Squirrelmail и SVN на одном компьютере. Я хочу перейти на страницу по умолчанию, набрав http: // mydomain, перейти к моему почтовому интерфейсу, набрав http: // mydomain / mail, и к моему svn, набрав http: // mydomain.no-ip.org / svn.

Вот мое определение 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>

Однако с этим есть проблема; при попытке перезапустить apache он говорит, что вы не можете определить DocumentRoot в пределах Location. Поэтому я что-то делаю не так, но пока не знаю, что именно.

При просмотре serverfault, чтобы узнать, есть ли у кого-нибудь похожая проблема, я нашел ссылку на примеры Apache vhost: http://httpd.apache.org/docs/2.0/vhosts/examples.html , hovever, я не могу понять, какой из примеров будет лучшим.

Честно говоря, я также не разбираюсь в apache и его способах, поэтому я знаю, что то, что я только что написал, может быть для вас в лучшем случае бессмысленным.

Итак, кто-нибудь знает, как решить мою проблему, пожалуйста? Любая помощь будет принята с благодарностью!

Действительно, у вас не может быть другого DocumentRoot; вы хотите Alias вместо.

Отбросьте DocumentRoot из <Location> блок и замените его этим (который должен находиться за пределами <Location> блок):

Alias /mail /usr/share/squrrelmail

И давайте применим эти настройки SquirrelMail к каталогу, а не к местоположению; просто поменяйте местами определения вверху и внизу блока:

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

Кроме того, маловероятно, что где-либо есть какие-либо настройки разрешений, применимые к каталогу SquirrelMail. Вам, вероятно, понадобится это или подобное в <Directory /usr/share/squrrelmail> раздел:

Order Allow,Deny
Allow from all
  1. Не используйте виртуальные хосты для одного хоста, настройте часть «Man server»
  2. Прочтите о директиве Alias