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


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.