使用VirtualHostfunction共享端口80?

我的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和所有其他设置之间的区别。 我怎样才能做到这一点?

谢谢!

名称虚拟主机是您在不同主机名上拥有不同网站的地方,但具有相同的IP地址。 例如,如果server1.com和server2.com都具有相同的IP地址,则可以使用namevirtualhost作为此名称。

如果server1.com和server2.com有不同的地址,虚拟主机也可以通过IP地址分开。

在发布http:// server / pligg示例的情况下,将使用别名来链接其他位置(通常位于文档根目录之外)的目录。 在<VirtualHost>容器中,别名将仅适用于该虚拟主机。 如果放置在别名之外,别名将适用于所有的虚拟主机。

 Alias /pligg/ "/srv/www/pligg/" <Directory "/srv/www/pligg"> Order allow,deny Allow from all </Directory> 

http:// server /〜blah ,其中blah是一个用户,位置在blah的主目录下应该与userdir配合 。 要启用userdir(在debian / ubuntu apache上),你可以使用'a2enmod'脚本。 a2enmod user_dir。

这应该做到这一点

 <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的howto 。