尽管我有一个启用站点的文件,但仍然会显示默认的 apache index.html

尽管我有一个启用站点的文件,但仍然会显示默认的 apache index.html

我已经安装了 apache2,/etc/apache2/sites-available 中有一个配置文件,sites-enabled 有一个指向它的软链接。但是在服务器上,我仍然看到 /var/www/html/index.html。我尝试过重新启动 apache,但没有成功。如果我停止 apache,框中不会显示任何内容,所以我确定这不是多个守护进程问题或类似问题。有人能想到 apache 看不到已启用站点的原因吗?

在 /etc/apache2/apache2.con 中,我有

# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf

但除此之外,我不明白为什么 apache 会硬连线来显示默认索引。

谢谢你的帮助,凯文

更新

这是站点配置文件:

 <VirtualHost *:80>
    ServerName example.com
    DocumentRoot "/var/www/sites/example.com/current/public"
    ErrorLog "/var/log/apache2/example.com-error_log"
    CustomLog "/var/log/apache2/example.com-access_log" common
    <Directory "/var/www/sites/example.com/current/public">
        Options All
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
    RewriteEngine On
    # Remove the www
    RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
    RewriteRule ^(.*)$ http://example.com/ [R=301,L]
</VirtualHost>

更新

作为实验,我删除了配置文件末尾的“>”,使其格式不正确,然后重新启动 Apache,没有出现任何错误。这说明启用站点的配置甚至没有被解析。

答案1

仅以以下身份访问网站 http://example.com将触发您配置的主机。http://www.example.com、服务器的 IP 或任何其他方法都将恢复为 Apache 默认值。

编辑:为了澄清起见,您可以执行以下操作之一:

  • 如果您希望将其作为您的默认/唯一主机,那么甚至不必担心 VirtualHost 标签,只需在服务器级别应用您的配置即可
  • 添加服务器别名行,例如ServerAlias example.com *.example.com
  • 为 www.example.com 添加新的 VirtualHost 并在那里定义重定向

答案2

Debian 版本的 Apache 2.4 专门在 apache2.conf 中加载 *.conf:

IncludeOptional sites-enabled/*.conf

事实证明我的配置文件不是以 .conf 结尾的,所以它从未被加载。将其从 example.com 重命名为 example.conf 解决了这个问题。

答案3

您缺少 ServerAlias 指令,因此 HTTP 请求不会到达您的虚拟主机,而是转到默认主机。

发生的情况是,HTTP 标头包含浏览器正在寻找的站点(例如 www.example.com),除非它与 ServerName 或 ServerAlias 指令匹配,否则 Apache 将不会提供配置的页面。

您可以使用:

ServerName example.com
ServerAlias www.example.com

或者,捕获对 *.example.com 的所有请求(根据您对第三级域名的使用情况,这可能是也可能不是所希望的):

ServerAlias *.example.com

重写规则在这里没有帮助,因为此配置没有捕获 HTTP 请求,它们将转到默认虚拟主机 - 而默认虚拟主机没有这些重写规则。希望这有意义。

相关内容