15

(您可以直接跳到问题,但上下文在背景部分。)

技术背景

  • 视窗 8
  • IIS 7

背景:

和其他几个人一样,我使用 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或类似的东西。

但是,这不起作用:Windows 主机文件中的通配符

正如 chue x 指出的那样,我们现在唯一的方法是继续向主机文件添加条目,或者,他们如何在链接的问题中解释,使用另一个 DNS 服务器。

4

1 回答 1

20

您的主机文件需要匹配您的 IIS 绑定,该绑定必须匹配 url 浏览器。

因此,如果您的主机文件如下所示:

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

编辑 - 如果您尝试在不添加站点 A 和站点 B 的主机条目的情况下执行上述操作,它将无法正常工作。DNS 不会找到它。例如,如果您尝试浏览“foo.stackoverflow.com”会发生什么 - 即使“stackoverflow.com”是已知地址,请求也会失败。

于 2013-05-30T15:07:10.597 回答