apache httpd.conf - 虚拟主机配置

apache httpd.conf - 虚拟主机配置

我对 apache 和 httpd.conf 还不熟悉

我遇到的问题是我需要不同的网站转到不同的 vhost 配置,并且如果仅请求 IP,则它需要转到根 index.html

这对于虚拟主机来说效果很好:

<VirtualHost *:80>
    DocumentRoot /var/www/html/bali-accommodation.co
    ServerName www.bali-accommodation.co
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /var/www/html/balibeach.co
    ServerName www.balibeach.co
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /var/www/html/dating-website.co
    ServerName www.dating-website.co
</VirtualHost>

但是,当我仅指定 IP 时,它会指定为 www.XXX.XXX.XXX.XXX(附加 www)。

我知道网站中有一个 .htaccess 重定向,它会添加 www,但我不希望 IP 进入 vhosts 配置。

我尝试将其添加到 Vhost 配置的顶部:

<VirtualHost *:80>
    DocumentRoot /var/www/html
    ServerName localhost
</VirtualHost>

通过上面的内容,可以完美地显示 index.html,但所有网站都会进入这个捕获所有内容的页面。

我也尝试过对网站虚拟主机进行这样的操作:

DocumentRoot /var/www/html/bali-accommodation.co 服务器名称 www.bali-accommodation.co

我尝试过上述操作,第一行带有和不带有“www”,但都没有成功。

有没有办法让 vhost 为域工作,并且如果有人输入 IP 它就会转到根 index.html?/var/www/html/index.html?

非常感谢亚当

答案1

Apache 按照定义顺序搜索虚拟主机以进行匹配。如果 ServerName 或 ServerAlias 指令中没有其他主机匹配,Apache 将为定义的第一个虚拟主机提供服务。您可以将一个 catchall 虚拟主机定义为最后一个

<VirtualHost *:80>
    DocumentRoot /var/www/html
    ServerName SomeName
    ServerAlias *
</VirtualHost>

这将匹配任何东西。

相关内容