我正在尝试使用 Mac 上的这个 /etc/hosts 文件将 google.com 重定向到我的本地机器,以供娱乐和学习。
127.0.0.1 www.google.com
但是,当我在 Mac 上使用 Chrome 访问 www.google.com 时,它仍然会映射到 Google 主页。为什么?
基本上,这就是我所做的一切:
sudo vim /etc/hosts
在终端中输入。- 输入
127.0.0.1 www.google.com
到hosts文件中。 - 保存并退出 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 尊重新条目,请执行以下操作:
/etc/hosts
按照@Renan 描述的方式进行编辑。去
chrome://chrome/settings/clearBrowserData
。选择
since the beginning of time
。选中
Empty the cache
,但取消选中其他所有选项。单击
Clear browsing data
并等待其完成。重新启动 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 描述的方式进行编辑。
- 去
chrome://chrome/settings/clearBrowserData
。 - 从一开始就选择。
- 选中清空缓存,但取消选中其他所有内容。
- 单击清除浏览数据并等待其完成。
- 重新启动 Chrome。
Chrome 现在应该尊重您的 hosts 文件。