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

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

好的,我的问题如下:我为自己设置了一个具有适当服务器名称的虚拟主机。例如,我还在同一台机器上安装了 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>

但是,这个有一个问题;当尝试重新启动 apache 时,它​​说您无法DocumentRoot在 a 中定义 a Location。因此,我做错了一些事情,但我还不知道具体是什么。

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

说实话,我也不熟悉 Apache 和它的方法,所以我知道我刚刚写的内容对你来说可能充其量是无意义的。

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

答案1

确实,您不能再拥有另一个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

答案2

  1. 不要对单个主机使用虚拟主机,配置“Man server”部分
  2. 阅读有关 Alias 指令的信息

相关内容