Apache2,ServerAlias 不起作用

Apache2,ServerAlias 不起作用

我知道这是一个被问过几次的问题,但是我已经全部读完了却没有解决问题。

我已经像这样配置了虚拟主机 apache:

sudo nano /etc/apache2/sites-available/example.loc

<VirtualHost *:80>
ServerName example.loc
ServerAlias www.example.loc

DocumentRoot /var/www/example/web
<Directory /var/www/example/web>
    AllowOverride All
    Order allow,deny
    Allow from All
</Directory>

ErrorLog /var/log/apache2/project_error.log
CustomLog /var/log/apache2/project_access.log combined

我将其放入/etc/hosts文件中:

127.0.0.1   localhost
127.0.0.1   example.loc

然后我通过以下方式加载网站:

sudo a2ensite example.loc

并重新启动apache。

如果我去example.loc,它可以正常工作,但如果我去www.example.loc,它就不起作用,说是“不可能找到www.example.loc”!

我是否在配置上做错了什么?

答案1

到 的条目/etc/hosts不是“包含性的”,因此您添加的example.loc不包括www.example.loc(或任何其他子域)。因此,您的浏览器会尝试找到www.example.loc通常的方法,即询问您配置的名称服务器。但当然没有名称服务器知道有关此域的任何信息。您的本地 Apache 永远不会以这种方式采取行动 ;)

另外需要说明的是,以/etc/hosts这种方式添加名称可能还会在其他方面带来问题。 行127.0.0.1 example.loc可能会覆盖行127.0.0.1 localhost,因此您可能会遇到解析问题localhost。 您可以在一行中为一个 ip 分配多个名称,因此正确的方法是

127.0.0.1 localhost example.loc www.example.loc

相关内容