apache2忽略默认主机并始终重定向到域,即使在使用IP时也是如此

apache2忽略默认主机并始终重定向到域,即使在使用IP时也是如此,apache2,vhosts,Apache2,Vhosts,我试图让apache2在用户通过IP地址访问我的服务器时使用默认站点,而不是输入站点的域,只是为了告诉用户他不能直接访问IP 发生的情况是,它不断重定向到域的站点,覆盖浏览器中的IP地址,而不是显示默认站点 注意域的站点被重定向到https,这是预期的。 默认站点根本不使用ssl,最好不要使用ssl 我的站点配置如下(无日志记录、错误文档或ssl路径指令): 000-default.conf <VirtualHost *> DocumentRoot /var/www/html

我试图让apache2在用户通过IP地址访问我的服务器时使用默认站点,而不是输入站点的域,只是为了告诉用户他不能直接访问IP

发生的情况是,它不断重定向到域的站点,覆盖浏览器中的IP地址,而不是显示默认站点

注意域的站点被重定向到https,这是预期的。 默认站点根本不使用ssl,最好不要使用ssl

我的站点配置如下(无日志记录、错误文档或ssl路径指令): 000-default.conf

<VirtualHost *>
    DocumentRoot /var/www/html
</VirtualHost>
http://example.com
https://example.com
按预期操作。
http://1.2.3.4:80/
意外重定向到
https://example.com

你应该避免
,这相当于
,这是非常不寻常的。从任何virtualhost中省略ServerName也是一个坏主意,因为它将从系统主机名中提取,并导致混淆

Apache首先选择最佳匹配的IP:PORT组合,然后从具有该最佳匹配的VirtualHost集合中查看ServerName/ServerAlias


这就是为什么选择了您的
*:80
virtualhost--这是一个更具体的匹配。

谢谢,这似乎就是原因。我见过无数的例子,其中使用
设置默认值。
<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /home/example.com/www
    Redirect permanent / https://example.com
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /home/example.com/www

    Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>