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