Q我已经保存了 hosts 文件,为什么网站访问结果还是没变?我在 Windows 里改了 hosts,并且也保存了文件,但打开目标网站时还是走了原来的地址。这种情况通常是什么原因?
A先排查缓存和解析链路
这种情况多半不是 hosts 没写进去,而是系统或应用还在用旧缓存。可以重点检查三件事:一是执行 ipconfig /flushdns 清理本机 DNS 缓存;二是关闭并重新打开浏览器,因为浏览器可能有自己的 DNS 缓存;三是确认目标程序没有单独的代理、VPN 或安全软件接管解析。
Q修改 hosts 后,为什么连记事本里保存都提示失败?我用记事本打开 hosts,编辑后保存时会提示没有权限,或者保存后内容看起来变了但实际上没生效。该怎么处理?
A用管理员权限编辑并确认保存位置
hosts 位于系统目录,普通权限通常无法稳定写入。建议右键以管理员身份打开记事本,再从 C:\Windows\System32\drivers\etc\hosts 直接编辑保存。保存时要确认文件名就是 hosts,不是 hosts.txt,也要避免被自动改成其他扩展名。
Qhosts 已经改对了,为什么只有部分软件生效?我测试过浏览器能访问到新地址,但某些客户端、命令行工具或办公软件还是连到旧服务器。这是什么情况?
A检查软件自己的解析方式
不同软件对域名解析的处理方式可能不一样。有些程序会使用内置 DNS、代理配置或 DoH/DNS over HTTPS,未必完全依赖系统 hosts。可以在软件设置里关闭自定义代理、DNS 劫持或安全网络功能,再重新测试。也可以用 nslookup 域名 或 ping 域名 对比系统解析结果。
Qhosts 文件内容看着没问题,为什么系统还是读不到?我检查了 hosts 的写法,映射关系也对,但 Windows 还是没有按这个规则解析。除了内容本身,还有哪些细节会影响生效?
A注意格式、编码和注释写法
hosts 文件对格式很敏感。每一行应保持 IP 域名 的结构,域名和 IP 之间用空格或制表符分隔,避免多余符号。文件编码尽量保存为 ANSI 或 UTF-8 无 BOM,部分情况下带 BOM 可能引发识别异常。还要确认没有把整行写成注释,也没有混入不可见字符。