我对 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>
这将匹配任何东西。