Apache:具有多个文档根目录的多个位置的虚拟主机:可能吗?

use*_*747 8 virtualhost apache-2.2

好的,这是我的问题:我已经为自己设置了一个具有适当服务器名称的虚拟主机。例如,我还在同一台机器上安装了 Squirrelmail 和 SVN。我想通过输入 http://mydomain 进入默认页面,通过输入 http://mydomain/mail 进入我的邮件前端,通过输入 http://mydomain.no-ip.org/svn 进入我的 svn。

这是我的虚拟主机定义:

<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>
Run Code Online (Sandbox Code Playgroud)

但是,那个有问题。尝试重新启动 apache 时,它​​说您不能DocumentRootLocation. 因此,我做错了一些事情,但我还不知道究竟是什么。

在浏览 serverfault 以查找是否有人遇到类似问题时,我找到了一个指向 Apache 的 vhost 示例的链接:http ://httpd.apache.org/docs/2.0/vhosts/examples.html,但是,我想不通哪个例子是最好的例子。

老实说,我也不精通 apache 和它的方法,所以我知道我刚刚写的东西对你来说可能充其量是荒谬的。

所以,有人知道如何解决我的问题吗?任何帮助将不胜感激!

Sha*_*den 15

事实上,你不能有另一个DocumentRoot;你会想要一个Alias

DocumentRoot<Location>块中删除,并将其替换为这个(必须在<Location>块之外):

Alias /mail /usr/share/squrrelmail
Run Code Online (Sandbox Code Playgroud)

让我们将这些 SquirrelMail 设置应用于目录而不是位置;只需交换块顶部和底部的定义:

<Directory /usr/share/squrrelmail>
    Options FollowSymLinks
    <IfModule mod_php5.c>
            php_flag register_globals off
    </IfModule>
    # etc
</Directory>
Run Code Online (Sandbox Code Playgroud)

此外,不太可能有适用于 SquirrelMail 目录的任何权限设置。您可能需要在该<Directory /usr/share/squrrelmail>部分中使用此或类似内容:

Order Allow,Deny
Allow from all
Run Code Online (Sandbox Code Playgroud)