为什么 hosts 文件重定向会失败?

为什么 hosts 文件重定向会失败?

我正在尝试使用 Mac 上的这个 /etc/hosts 文件将 google.com 重定向到我的本地机器,以供娱乐和学习。

127.0.0.1 www.google.com

但是,当我在 Mac 上使用 Chrome 访问 www.google.com 时,它仍然会映射到 Google 主页。为什么?

基本上,这就是我所做的一切:

  1. sudo vim /etc/hosts在终端中输入。
  2. 输入127.0.0.1 www.google.com到hosts文件中。
  3. 保存并退出 vim。

答案1

hosts文件不能以这种方式工作。您只能使用它来将主机名映射到 IP 地址,而不能localhost

对于您的情况,您可以使用127.0.0.1 www.google.com,即将 www.google.com 映射到 127.0.0.1。

如果您想要将更多主机名映射到单个 IP,只需在同一行添加这些主机名,例如127.0.0.1 www.a.com www.b.com

答案2

网络浏览器并不是检查hosts语法是否正确的最佳方式。尝试执行

ping www.google.com

并验证其是否能ping通127.0.0.1

Chrome 似乎忽略您的文件的原因hosts是缓存:

如果 Chrome 最近已经查询过该 IP(最近查询的定义很可能取决于生存时间 (TTL)DNS 服务器返回的结果),它将绕过该hosts文件,因为它已经知道正确的 IP。这样做是为了加快网页浏览速度。

要使 Chrome 尊重新条目,请执行以下操作:

  1. /etc/hosts按照@Renan 描述的方式进行编辑。

  2. chrome://chrome/settings/clearBrowserData

  3. 选择since the beginning of time

  4. 选中Empty the cache,但取消选中其他所有选项。

  5. 单击Clear browsing data并等待其完成。

  6. 重新启动 Chrome。

Chrome 现在应该尊重您的hosts文件。

答案3

我的答案是以上内容的组合,因为我通过适用于 Ubuntu 16.04 的 Fortinet SSL VPN 连接到我的办公室。

我要做的第一件事是打开终端控制台并运行以下命令:

sudo nano /etc/resolvconf/resolv.conf.d/base

我添加了以下示例:

searchdomain domain.local
nameserver xxx.xxx.xxx.xxx
nameserver xxx.xxx.xxx.xxx

然后我按下保存文件CTRL-O并按下关闭nano CTRL-X

然后我做了以下操作并且效果很好:

要使 Chrome 尊重新条目,请执行以下操作:

/etc/hosts按照@Renan 描述的方式进行编辑。

  1. chrome://chrome/settings/clearBrowserData
  2. 从一开始就选择。
  3. 选中清空缓存,但取消选中其他所有内容。
  4. 单击清除浏览数据并等待其完成。
  5. 重新启动 Chrome。

Chrome 现在应该尊重您的 hosts 文件。

相关内容