我的 Ubuntu 服务器在 /etc/apache2/sites-enabled/002-foosite 中有这个
<VirtualHost 72.14.xxx.yyy:80>
ServerName foosite.com
ServerAlias www.foosite.com
DocumentRoot /home/bar/public_html
ServerAdmin [email protected]
</VirtualHost>
每次我访问服务器的 80 端口时,我都会获取 /home/bar/public_html 的内容。但我想要做的是根据用户访问的 URL 拥有多个 DocumentRoot。例如:
http://server/bar should go have DocumentRoot /home/bar/public_html
http://server/pligg should have DocumentRoot /srv/www/pligg
http://server/~blah should have DocumentRoot /home/blah/public_html
我确信这不是一个不常见的设置,但我真的不明白 Alias、VirtualHost、NameVirtualHost 和配置此功能的所有其他设置之间的区别。我该怎么做?
谢谢!
答案1
A虚拟主机名是指您在不同的主机名上拥有不同的网站,但使用相同的 IP 地址。例如,如果 server1.com 和 server2.com 都具有相同的 IP 地址,则可以使用 namevirtualhost 来实现这一点。
虚拟主机也可以通过以下方式分隔IP 地址,假设server1.com和server2.com有不同的地址。
一个别名将用于http://服务器/pligg您发布的示例,链接位于其他地方的目录(通常在文档根目录之外)。在 <VirtualHost> 容器内,别名将仅适用于该虚拟主机。如果放置在容器外部,别名将适用于所有虚拟主机。
Alias /pligg/ "/srv/www/pligg/"
<Directory "/srv/www/pligg">
Order allow,deny
Allow from all
</Directory>
http://服务器/~blah,其中 blah 是用户,并且位置在 blah 的主目录中,应该配置为用户目录。要启用 userdir(在 debian/ubuntu apache 上),您可以使用“a2enmod”脚本,例如 a2enmod user_dir。
答案2
这应该可以
<VirtualHost 72.14.xxx.yyy:80>
ServerName foosite.com
ServerAlias www.foosite.com
DocumentRoot /home/bar/public_html
Alias /bar/ /home/bar/public_html
Alias /pligg/ /srv/www/pligg
Userdir public_html
ServerAdmin [email protected]
</VirtualHost>
有关别名命令,请参阅mod_alias 文档。有关 ~ 魔法,请参阅mod_userdir 文档或这个公共 HTML 指南。