请问 hosts 文件中可以使用通配符批量设置映射吗?

比如我想把所有类似:

local.任意字符.com 统统映射到 127.0.0.1

这样我就不用一个一个去写了,不知道有大佬知道没,谢谢。

阅读 9.2k
3 个回答

不可以,但是你可以用 .localhost 这个特殊后缀,这个后缀的将会自动被解析到 127.0.0.1,比如 abc.localhost

但是,这个只是在少数应用中能被处理,浏览器就是其中之一,其他一些软件不一定能处理,比如命令行下的 cURL,就不能。还是需要你手动修改 hosts。

这个的好处就是,localhost 和 127.0.0.1 在浏览器的一些场景下是有特权的,比如使用麦克风、定位这些权限,常规域名都必须要在 https 下才行,而 localhost 和 127.0.0.1 不受限制。


还有一种特殊的手段,就是你把你自己的域名,通配符解析到 127.0.0.1(部分服务商允许你这样做),比如,把 *.example.com 解析到 127.0.0.1。

如果你没有域名,也可以用一些别人提供的 nip.io - wildcard DNS for any IP Address

不可以,操作系统提供的 hosts 本身没这个功能。

你要非想这么干的话就得自己搭一个私有 DNS 服务器了。比如 Linux 下有 bindpowerdnsmaradns 之类的,都支持通配符。你可以在本地搭一个,然后把本机 DNS 指向它。


刚又重新看了下 DNS 协议,按规范来说通配符只能是第一位,比如 *.example.com,不能是其他位 example.*.com 这种的。所以还是只能一个一个单独添加。

之前计划自己做一个私有DNS的工具的,正好可以完美满足你的这个需求。
后面写了一个README就放弃了。。。等以后有想法了说不定会补上。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题