主机文件重定向如何失败?


12

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

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到主机文件。
  3. 保存并退出vim。

Answers:


10

该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。


1
谢谢。我只是将Mac上的/ etc / hosts文件更改为127.0.0.1 www.google.com。但是,google.com仍然可以访问Google主页。我需要刷新什么吗?我应该重新启动计算机吗?
— David Faux 2012年

您不需要。尝试127.0.0.1 google.com在此行之后添加(不添加www),并检查其是否有效。
— 雷南

127.0.0.1 google.com也不起作用。我不确定发生了什么...我知道这/etc/hosts是/private/etc/hostsMac上的软链接,但我认为这完全没有帮助。
— David Faux 2012年

1
技术上:hosts将主机名映射到IP地址,反之亦然。
— 丹尼斯2012年

1
@Dennis,这就是我要说的,但是话又说回来,当您考虑它时,它确实确实可以双向工作,因为它在两个项目之间建立了关联。
— Synetech 2012年

9

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

ping www.google.com

并确认它能ping通127.0.0.1。

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

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

为了使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现在应该尊重您的文件。


2
我很早以前通过IE6学会了这一点。如果在IE仍处于打开状态的情况下对HOSTS文件进行了更改,则必须专门关闭该文件并再次运行该文件,以使更改生效。这适用于大多数程序。但是,某些程序(例如过去一两年中的Chrome版本)实际上会定期重新读取HOSTS文件,因此,如果进行更改,请稍等一两分钟,然后刷新(无需清除缓存)。(这样的重读策略有时很方便,但由于浪费而在现实中通常很糟糕,如果HOSTS文件很大,则尤其糟糕。)
— Synetech 2012年

@Synetech:hosts只要条目不是已经缓存的主机名,Chrome就会立即接受更改。我假设它hosts仅检查TTL是否过去。对于大型网站,这可能需要一段时间。
— 丹尼斯

我不知道有关重新读取HOSTS文件的不同版本的细节,但是您可以使用Filemon / ProcMon来查看它的运行情况。chrome.exe偶尔会读取整个文件。
— Synetech


@hakunin:整齐。在Chromium 25.0.1364.160 Ubuntu 12.04上,这甚至不再是必需的。我签入了net-internals/#dns,/etc/hosts更改后主机缓存会自动清除。
— 丹尼斯

1

我的答案是上述两者的结合,因为我正在通过Fortinet SSL VPN for Ubuntu 16.04连接到我的办公室。

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

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现在应该尊重您的主机文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.