根据我自己的经验以及谷歌搜索时遇到的情况,可以尝试以下操作:
1.您检查它是否正常工作?
对主机所做的更改应立即生效,但是Windows会缓存名称解析数据,因此一段时间以来可能会使用旧记录。打开命令行(Windows + R cmd
,Enter),然后键入:
ipconfig /flushdns
删除旧数据。要检查它是否有效,请使用(假设您的主机中有一个ipv4条目用于www.example.com,或者您的主机中有一个ipv6条目用于ipv6.example.com):
ping www.example.com -n 1
ping -6 ipv6.example.com -n 1
并查看它是否使用正确的IP。如果是,则您的主机文件很好,问题出在其他地方。
另外,您可以使用重置NetBios缓存(以管理员身份打开控制台,否则它将失败):
nbtstat -R
您可以使用以下方法检查DNS缓存中的当前数据:
ipconfig /displaydns | more
2.基础知识
- 您的主机文件名称正确吗?应该是
hosts
,而不应该是host
,等等。
- 扩展名正确吗?它应该没有扩展名(
hosts
not hosts.txt
)-如果已将窗口配置为隐藏已知扩展名,请小心,检查属性以确保:正确的主机文件类型将仅显示为“文件”。
- 您是否遵循正确的语法?您是否意外地在带有
#
注释的井号()之前加了行?
- 您是否照顾好所有变体(
www.example.com
并且example.com
-最安全的方法是同时添加两个变体)?
3.空格
每行的格式为IP address
,然后为水平制表符(转义码\t
,ASCII HT
,hex 0x09
)或单个空格(hex 0x20
),然后为主机名,即。www.example.com
,然后最后是回车符,后跟换行符(转义码\r\n
,ASCII CRLF
,hex 0x0d 0x0a
)。
样本条目,使用Unicode控制图片指示控制字符。(请勿将它们复制并粘贴到您的主机文件中!)
192.0.2.1␉www.example.com␍␊
2001:db8:8:4::2␉ipv6.example.com␍␊
可以使用十六进制编辑器插件在Notepad ++中查看各个字节。Notepad ++还将显示特殊字符(查看->显示符号),因此您可以轻松检查空白字符的数量和种类。
如果您从某处复制并粘贴主机条目,则可能会以多个空格结尾。从理论上讲,主机支持将两个列分开的多个空格,但是如果没有其他作用,则尝试另一回事。
为了安全起见,请确保主机文件中的所有行都使用制表符或空格,而不是两者都使用。
最后,用空白行终止文件。
4.注册表项
有一个注册表项,用于指定主机文件的位置。据说Windows实际上并不支持将hosts文件放在其他位置,但是您可能要检查一下。关键是:
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DataBasePath
条目应为:
%SystemRoot%\System32\drivers\etc
5.权限
有时,文件,文件属性和类似内容的权限存在问题。要使用默认权限重新创建文件,请执行以下操作:
- 在您的桌面上创建一个新的文本文件。
- 将当前主机文件的内容复制并粘贴到记事本中的该文件中。
- 保存新的文本文件,并将其重命名为
hosts
。
- 将文件复制(不要移动)到您的
%SystemRoot%\System32\drivers\etc
目录中,并覆盖旧文件。
最后一点很重要:复制有效,移动无效。
本地Users
帐户必须能够读取主机文件。确保(在Windows 7中):
%SystemRoot%\System32\drivers\etc
在Windows资源管理器中导航到。
- 如果看不到
hosts
文件,请确保可以看到隐藏文件和系统文件。
- 右键单击
hosts
文件,然后Properties
从上下文菜单中选择。
- 在
hosts Properties
窗口中,单击Security
选项卡。
- 检查框中的名称列表
Group or user names:
。如果%COMPUTERNAME%\Users
存在,请单击它以查看权限。
- 如果
Users
不存在,或者存在但没有Read
权限,请单击Edit...
。
- 如果
Users
不存在,请单击Add...
,键入Users
,单击Check Names
,然后单击“确定”或按Enter。
- 选择
Users
,并确保Read & execute
已在Allow
列中选中它。单击确定。如果Windows Security
弹出警报框,请选择Yes
继续。
- 单击“确定”关闭
hosts Properties
窗口。
- 转到此答案的第1部分,然后按照说明检查它是否现在可以正常工作。
6.编码
主机文件应使用ANSI或UTF-8编码,而不包含BOM。您可以通过文件->另存为来实现。
7.代理
如果您配置了代理,它可能会绕过主机文件。解决方案是不使用代理,或将其配置为不执行此操作。
要进行检查,请转到Internet Explorer-> Internet选项->连接-> LAN设置。如果所有内容均为空白,并且选中了“自动检测设置”,则说明您未使用代理。
如果您依靠代理访问网络,因此不想禁用它,则可以通过以下方法添加例外:Internet Explorer-> Internet选项->连接-> LAN设置->代理服务器/高级。然后将您的例外添加到“例外”文本框中。例如localhost;127.0.0.1;*.dev
8. DNS地址
(这也可以解决代理问题。)
转到网络连接属性,然后转到TCP / IP设置,然后将第一个DNS服务器更改为127.0.0.1
(localhost)。第二个可能应该是您的实际DNS的IP。
对于hosts文件来说,这不是必需的,但是如果配置有些奇怪,这可能会对您有帮助。
9. .local地址
如果您使用myhost.local形式的.local域条目,但该条目被忽略,请尝试以下操作
x.x.x.x myhost.local www.myhost.local
即使www.myhost.local不存在。Windows无法以某种方式不附加其工作组或localdomain。