(您可以直接跳到问题,但背景是在背景部分。)
技术背景
背景
和其他几个人一样,我使用IIS,有时我需要设置一个本地版本的站点。现在,在设置不同的站点时,为它们分配不同的端口以使它们不重叠是很常见的。因此,您可以将您的站点A置于端口80,将站点B置于端口81,依此类推。
现在,我想设置绑定,以便我能够在端口80下拥有多个站点,并且使用标题主机区别,我可以同时为这些站点提供有意义的URL。
执行此操作的选项是向主机文件添加条目,例如:
127.0.0.1 siteA.com
127.0.0.1 siteB.com
有了这个,您应该可以浏览到siteA.com或siteB.com,并让它在本地工作。
但是我想再采取一步措施,因为localhost已经设置为匹配127.0.0.1,所以:
问题:
我已将IIS绑定设置为:
site host header port
siteA siteA.localhost 80
siteB siteB.localhost 80
我希望我可以浏览http://siteA.localhost/和http://siteB.localhost/并获取我的网站。
但是,当我浏览时,似乎我的请求永远不会到达IIS,并且地址未解析。
为什么不起作用?
更新
我选择了chue x的答案,因为他解释了为什么这不起作用。对于那些可能遵循相同路径的人,您可能会认为“好吧,我可以在主机文件中添加*.localhost
,并且应该完成。”甚至可以切换到*.local
或*.localdev.com
或类似的东西。
然而,这不起作用:Wildcards in a Windows hosts file
正如chue x指出的那样,我们现在唯一的方法是不断向hosts文件添加条目,或者在链接的问题中解释它们如何使用其他DNS服务器。
答案 0 :(得分:19)
您的主机文件需要与您的IIS绑定匹配,这些绑定必须与网址浏览器匹配。
因此,如果您的主机文件如下:
127.0.0.1 siteA.localhost
127.0.0.1 siteB.localhost
您的IIS绑定必须是:
site host header port
siteA siteA.localhost 80
siteB siteB.localhost 80
最后,从本地计算机上,您需要浏览到:
http://siteA.localhost
编辑 - 如果您尝试在不添加siteA和siteB的hosts条目的情况下执行上述操作,则无法执行此操作。 DNS无法找到它。例如,如果您尝试浏览到“foo.stackoverflow.com”会发生什么 - 即使“stackoverflow.com”是已知地址,请求也会失败。