我正在运行MacOSX 10.11.4。
我想让example.com指向我本地运行的apache服务器,但请www.example.com指向实际的网站。
实施例:
我在/ etc / hosts文件中有以下条目:
127.0.0.1 example.com
如果我ping example.com和www.example.com,它们都达到127.0.0.1(我相信因为规范的URL被识别为相同)。
有趣的是,Chrome会根据需要提取网址,但Firefox会点击localhost。
-
编辑:我知道使用像example.local这样的东西更为传统,完全避免了这个问题;但是,我的工作现在已经使用www / non-www方法一段时间了,如果可能的话,我希望保留它。
答案 0 :(得分:3)
这可能太容易了,但为什么不放
example.com 127.0.0.1
www.example.com 123.52.232.12
进入/etc/hosts
文件,123.52.232.12是真实example.com网站的IP地址?
为什么会发生这种情况或如何阻止这两个域转到我的主机文件
这是默认的解决方案顺序,子域名为the hosts
file自动扩展。 solution by @fragmentedreality使用dnsmasq解析程序提供了一种解决方法,该解析程序也在https://serverfault.com/questions/431605/dont-automatically-include-all-subdomains-in-dnsmasq-address推荐,并在https://gist.github.com/ogrrd/5831371处进行了描述。
答案 1 :(得分:2)
在运行OSX时,您可以为其添加自定义resolver。
创建目录/etc/resolver/
并为您想要解析的域添加文件(例如example.com)。在文件内部,您可以指定用于指定域的备用名称服务器。默认情况下,文件名定义域(有关详细信息,请参阅联机帮助页。)。
$ 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
的查询。您可以通过自制软件安装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 here的更多信息。