我多次这样做,但现在不起作用。我已将 apache 配置为使用不同的端口,并使用不同的 ip,并且我也使同样的事情起作用了...我已将 bind 配置为我的本地 dns,当我转到我的主机时(例如,我有一个名为 vipc 的 Linux 服务器 CentOS),当我转到 http://vircent.. 时,它会打开我放在 /var/www/page1/index.html 中的页面。现在我想做的是,当我转到 http://vircent/site1 时 - 从 page1 目录打开 index.html。但我还希望当我转到 htt://vircent/site2 时从 page2 目录打开 index.html。
这就是我现在所拥有的,我不知道它是否会起作用
NameVirtualHost *:80
<VirtualHost *:80>
ServerName vircent
DocumentRoot /var/www/page1
</VirtualHost>
<VirtualHost *:80>
ServerName vircent
DocumentRoot /var/www/page2
</VirtualHost>
答案1
您正在尝试同时做两件不同的事情。
如果您想要http://vircent/site1
并http://vircent/site2
访问这两个不同的站点,您需要设置一个包含这两个位置的站点(“vircent”)(最简单的方法就是将目录物理移动到适当的位置,例如在本例中,让 DocumentRoot 指向 /var/www,在这种情况下,http://vircent/page1
它将http://vircent/page2
按您希望的方式工作)。
基于名称的虚拟主机有两个不同的名称,例如 vircent1 和 vircent2——顺便提一下,对于这类事情,最好使用完全合格的域名。因此,您可以将 httpd.conf 更改为类似
NameVirtualHost *:80
<VirtualHost *:80>
ServerName vircent1
DocumentRoot /var/www/page1
</VirtualHost>
<VirtualHost *:80>
ServerName vircent2
DocumentRoot /var/www/page2
</VirtualHost>
(并在BIND中做相应的修改)
事实上,您有两个具有相同 ServerNames 的不同虚拟主机,这意味着只有第一个虚拟主机得到服务。