我正在运行macOSX 10.11.4。
我想让example.com指向我本地运行的apache服务器,但请www.example.com指向实际网站。
示例:我在/etc/hosts文件中有以下条目: 127.0.0.1 example.com
如果我ping xplox.com和www.example.com,他们都达到127.0.0.1(我相信,因为规范的URL被认为是相同的)。
有趣的是,Chrome会按照我的意愿拉出URL,但是Firefox将击中Localhost。
-
编辑:我知道使用example.local更常规的内容,并且完全避免了此问题;但是,我的工作已经使用了www/non-www方法了一段时间,并希望在可能的情况下保留。
这可能太容易了,但是为什么不放置
example.com 127.0.0.1
www.example.com 123.52.232.12
进入您的/etc/hosts
文件,其中123.52.232.12是真实示例网站的IP地址?
为什么会发生或如何阻止两个域进入我的主机文件
这是默认的分辨率订单,子域中的hosts
文件自动扩展。@fragmentEdreality的解决方案通过使用DNSMASQ解析器提供了解决方法,该解析器也建议在https://serverfault.com/questions/431605/431605/dont-automatimationaly-include-include-include-all-subdomains-insmasq-address上进行了描述,并在HTTPS上进行了描述。://gist.github.com/ogrrd/5831371。
在运行OSX时,您可以为此添加自定义解析器。
创建目录/etc/resolver/
并为域添加一个文件,您想解决(即example.com)。在文件中,您可以指定用于指定域的替代名称服务器。默认情况下,文件名定义了域(有关更多详细信息,请参见manpage)。
$ sudo mkdir -p /etc/resolver
$ echo "nameserver 127.0.0.1" | sudo tee /etc/resolver/example.com > /dev/null
您可以检查解析器是否使用命令scutil --dns
。
现在,您只需要运行像DNSMASQ这样的本地名称服务器即可将查询解析到127.0.0.1
。您可以通过Homebrew安装DNSMASQ,也可以在Docker-container中运行:
$ docker run -p 53:53/tcp -p 53:53/udp --cap-add=NET_ADMIN
andyshinn/dnsmasq:2.75
--host-record=example.com,127.0.0.1
在此处查找有关Homebrew-Solution的更多信息。