![Apache:具有多个位置和多个文档根的虚拟主机:可能吗?](https://linux22.com/image/576573/Apache%EF%BC%9A%E5%85%B7%E6%9C%89%E5%A4%9A%E4%B8%AA%E4%BD%8D%E7%BD%AE%E5%92%8C%E5%A4%9A%E4%B8%AA%E6%96%87%E6%A1%A3%E6%A0%B9%E7%9A%84%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%EF%BC%9A%E5%8F%AF%E8%83%BD%E5%90%97%EF%BC%9F.png)
好的,我的问题如下:我为自己设置了一个具有适当服务器名称的虚拟主机。例如,我还在同一台机器上安装了 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
- 不要对单个主机使用虚拟主机,配置“Man server”部分
- 阅读有关 Alias 指令的信息