通过Apache虚拟主机访问多个站点-找不到404
我整晚都在想这个问题,但无论我看了多少教程和资源,都没有成功 我的目标是能够在一台运行apache服务器上访问两个不同的网站 最终目标是这样的(使用本地ip) 192.168.1.8/site1->第一个站点 192.168.1.8/站点2->第二站点 我已经在httpd.conf中包含了以下内容通过Apache虚拟主机访问多个站点-找不到404,apache,server,Apache,Server,我整晚都在想这个问题,但无论我看了多少教程和资源,都没有成功 我的目标是能够在一台运行apache服务器上访问两个不同的网站 最终目标是这样的(使用本地ip) 192.168.1.8/site1->第一个站点 192.168.1.8/站点2->第二站点 我已经在httpd.conf中包含了以下内容 <VirtualHost *:80> DocumentRoot "/root/sites/site1" ServerName site1 </Virt
<VirtualHost *:80>
DocumentRoot "/root/sites/site1"
ServerName site1
</VirtualHost>
<VirtualHost *:80>
ServerName site2
DocumentRoot "/root/sites/site2"
</VirtualHost>
有人能发现我遗漏了什么吗?名称虚拟主机是按名称而不是IP地址访问的。通过配置,您已经告诉Apache侦听到主机名“site1.example.com”和“site2.example.com”的传入连接(将您自己的域替换为“example.com”) 如果没有名称来区分它们,就不能让两个虚拟主机侦听同一IP地址和同一端口。当您转到时,Apache无法知道您是打算访问site1还是site2。因此,它会将您发送到第一个匹配的主机,这是配置中的第一个
。然后它接受您对/site1
的请求,并将其附加到第一个VirtualHost的DocumentRoot。但由于您没有/root/sites/site1/site1
目录,因此会出现404错误
有两种选择
您可以在两个不同的端口上运行这两个VirtualHost
<VirtualHost *:80>
DocumentRoot "/root/sites/site1"
...
</VirtualHost>
<VirtualHost *:8080>
DocumentRoot "/root/sites/site2"
...
</VirtualHost>
然后构造文件系统,使site1的内容位于/root/sites/site1
下,site2位于/root/sites/site2
下。然后URLhttp://192.168.1.8/site1
和http://192.168.1.8/site2
将自动工作
您可能还能够制定一些mod_rewrite
规则,但这将变得更加复杂
<VirtualHost *:80>
DocumentRoot "/root/sites/site1"
...
</VirtualHost>
<VirtualHost *:8080>
DocumentRoot "/root/sites/site2"
...
</VirtualHost>
DocumentRoot "/root/sites"