在本地开发 Web 应用时,我喜欢使用类似的地址app.localhost:8080
来访问它们。它们在 Chrome 中运行良好,但在 Safari 中却不行。我猜这是因为 Chrome 对 TLD 有特殊处理,而 Safari 使用 OS DNS 解析器。
有没有办法让 macOS 将所有.localhost
地址解析为127.0.0.1
?
答案1
是的,作为 root,你应该编辑你的 /etc/hosts 文件并添加如下行
127.0.0.1 app.localhost
127.0.0.1 app2.localhost
ETC。
如果它不立即起作用,则重新启动浏览器/重启。
更新:我没有 Mac,但可以尝试一下127.0.0.1 *.localhost
。对于我的 Linux,它不起作用,那么唯一的方法是在您的机器上设置 DNS 服务器并在其上配置“localhost”区域。
答案2
我认为通配符 (*) 在 中不起作用/etc/hosts
。在 MacOS Safari 上,唯一的选择是使用类似域名系统:
brew install dnsmasq
mkdir -pv $(brew --prefix)/etc/
echo 'address=/.localhost/127.0.0.1' >> $(brew --prefix)/etc/dnsmasq.conf
echo 'port=53' >> $(brew --prefix)/etc/dnsmasq.conf
sudo mkdir -v /etc/resolver
sudo bash -c 'echo "nameserver 127.0.0.1" > /etc/resolver/localhost'
sudo brew services start dnsmasq
如果您使用的是不同的域扩展名(如 *.test),请将其替换localhost
为test
所有地方。
此外,port53
是 DNS 端口。重新映射将适用于所有端口。例如,您可以使用http://foobar.localhost:8080
或任何其他名称。
上面的脚本修改自这个要点。