为何我的 hosts 文件不起作用?

为何我的 hosts 文件不起作用?

我一直使用 hosts 文件进行本地网站开发,但最近它停止工作了。除了 localhost 解析之外,没有其他条目。

我已经简化了测试,所以现在它只包含

127.0.0.1  localhost
::1        localhost
127.0.0.1  test.dev

localhost 响应 ping,但 test.dev 没有响应。

  • 文件名hosts无扩展名
  • 它没有尾随空格
  • 它保存在 C:\WINDOWS\System32\drivers\etc 中,与 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DataBasePath 的值匹配
  • 奇怪的是,尽管 UAC 已打开,但我可以在没有管理员权限的情况下编辑、删除和保存文件
  • 未使用代理,PC 未连接网络进行测试
  • 停止 DNS 客户端服务似乎可以在几分钟内解决问题,test.dev 可以短暂解决问题,但不能再解决问题。
  • 唯一的防火墙是 Windows 的
  • 机器已重新启动。

还有什么我应该尝试的吗?

答案1

避免对同一 IP 地址使用多个条目 — 在同一行上写入多个主机名(第一个是规范名称)。例如:

127.0.0.1 localhost localhost.localdomain test.dev

::1 localhost localhost.localdomain test.dev

如果仍然遇到问题,请尝试(从命令提示符):

net stop dnscache

答案2

尝试这个:

# 127.0.0.1 localhost
::1 localhost
::1 test.dev 127.0.0.1 test.dev

答案3

您是否尝试过删除该行:

::1        localhost

或添加以下行:

::1        test.dev

更新

过去,如果 hosts 文件在地址和名称之间包含空格而不是制表符,就会出现问题。我最近没有进行足够的检查,不知道是否仍然如此。您可以尝试确保分隔符是制表符而不是空格。

答案4

我可以通过不使用 .dev 作为 TLD 来解决我的问题(顶级域名)。

显然,Google 拥有 .dev,并已设置 HSTS(HTTP 严格传输安全)以确保对任何 .dev 网站的所有请求都会自动重定向到 https :(。我相信这是在浏览器中实现的,并且在 Chrome 和 Safari 中都发生过。

解决方案:使用 .test(或任何其他 TLD)代替 .dev

以下链接包含有关此主题的更多信息:https://ma.ttias.be/chrome-force-dev-domains-https-via-preloaded-hsts/

相关内容