通过Apache虚拟主机访问多个站点 - 404 Not Found

时间:2015-12-15 21:24:16

标签: apache server

无论我查看了多少教程和资源,我一直试图彻夜不眠,但没有成功。

我的目标是能够在运行的apache服务器上访问两个不同的网站。

最终目标是这样的(使用本地IP);

192.168.1.8/site1 - >第一个网站 192.168.1.8/site2 - >第二个网站

我在httpd.conf中包含了以下内容

<VirtualHost *:80>
        DocumentRoot "/root/sites/site1"
        ServerName site1
</VirtualHost>
<VirtualHost *:80>
        ServerName site2
        DocumentRoot "/root/sites/site2"
</VirtualHost>

值得一提的是,默认的DocumentRoot和Directory设置仍在http.conf中,实际上指向了site1文件。

转到192.168.1.8会将我带到site1(从http.conf中的DocumentRoot设置猜测)

转到/ site1或/ site2都会给我404 Not Found

我已经运行-S来查看任何问题,但据我所知它看起来很好;

VirtualHost configuration:
*:80                   is a NameVirtualHost
         default server site1 (/usr/local/etc/apache24/httpd.conf:244)
         port 80 namevhost site1 (/usr/local/etc/apache24/httpd.conf:244)
         port 80 namevhost site2 (/usr/local/etc/apache24/httpd.conf:248)
ServerRoot: "/usr/local"
Main DocumentRoot: "/usr/local/www/apache24/data"
Main ErrorLog: "/var/log/httpd-error.log"
Mutex default: dir="/var/run/" mechanism=default
Mutex mpm-accept: using_defaults
PidFile: "/var/run/httpd.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www" id=80
Group: name="www" id=80

有人能发现任何我错过的明显事物吗?

1 个答案:

答案 0 :(得分:0)

NameVirtualHosts旨在按名称访问,而不是通过IP地址访问。使用您的配置,您已告诉Apache侦听到主机名“site1.example.com”和“site2.example.com”的传入连接(将您自己的域名替换为“example.com”)

如果没有名称来区分它们,则不能让两个虚拟主机侦听相同的IP地址和相同的端口。当你转到http://192.168.1.8时,Apache无法知道你是否打算访问site1或site2。因此它会将您发送到匹配的第一个主机,这是配置中的第一个<VirtualHost *:80>。然后它会收到您对/site1的请求,并将其附加到第一个VirtualHost的DocumentRoot。但由于您没有/root/sites/site1/site1目录,因此会出现404错误。

有几种选择。

您可以在两个不同的端口上运行两个VirtualHost。

<VirtualHost *:80>
    DocumentRoot "/root/sites/site1"
    ...
</VirtualHost>

<VirtualHost *:8080>
    DocumentRoot "/root/sites/site2"
    ...
</VirtualHost>

或者,您可以只拥有一个包含单个文档根目录的网站:

DocumentRoot "/root/sites"

然后只构建您的文件系统,以便site1的内容位于/root/sites/site1下的site2和/root/sites/site2下的site2。然后,网址http://192.168.1.8/site1http://192.168.1.8/site2将自动生效。

您可能也可以制定一些mod_rewrite规则,但这会变得更加复杂。