主机文件重定向怎么会失败?

Dav*_*aux 13 hosts hosts-file

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

127.0.0.1 www.google.com
Run Code Online (Sandbox Code Playgroud)

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

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

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

Ren*_*nan 12

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.


Den*_*nis 10

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

ping www.google.com
Run Code Online (Sandbox Code Playgroud)

并验证它 ping 127.0.0.1

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

如果 Chrome 最近已经查询了 IP(最近的定义很可能取决于DNS 服务器返回的生存时间 (TTL)),它将绕过该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。

Chromehosts现在应该尊重您的文件。

  • 我很久以前用 IE6 学到了这一点。如果我在 IE 仍然打开时对 HOSTS 文件进行了更改,我将不得不专门关闭它并再次运行它以获取更改。这适用于大多数程序。然而,某些程序(例如过去一两年的 Chrome 版本)实际上会定期重新读取 HOSTS 文件,因此如果您进行更改,只需等待一两分钟,然后刷新(无需清除缓存)。(这种重读策略有时像这样很方便,但实际上通常很糟糕,因为它很浪费,如果 HOSTS 文件很大,则尤其糟糕。) (2认同)
  • 有一种不那么残酷的方法来刷新 chrome 的 DNS 缓存 http://superuser.com/questions/203674/how-to-clear-flush-the-dns-cache-in-google-chrome (2认同)