我知道这是一个被问过几次的问题,但是我已经全部读完了却没有解决问题。
我已经像这样配置了虚拟主机 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