是否可以配置 IIS7 来实现与 Apache 的通配符域相同的功能?我对基于 URL 中使用的子域用户在 ASP.NET Web 应用程序中路由用户感兴趣。

这里描述了类似的事情:

http://steinsoft.net/index.php?site=programming/articles/apachewildcarddomain

谢谢

有帮助吗?

解决方案

答案是否定的,IIS7(仍然)不支持通配符主机名(请参阅 )。如果您想在一个网站上提供多个域服务,目前唯一的解决方法(正如 notandy 所建议的)是使用专用 IP 并通过 DNS 来实现,DNS 确实支持通配符。

2013年更新

为了完整起见,IIS8 还没有此功能。

2016年更新

最后,Windows 2016 中的 IIS 10 支持通配符子域。

其他提示

不IIS支持通配主机的头?我可以捕捉和重定向 *.mydomain.com 一个网站?

答案是肯定/没有。是的,因为你是 能够重新定向*.mydomain.com 来一个 网站。没有,因为魔法是在 DNS和不IIS。

这里就是你如何做到这一点:
在IIS MMC, 配置一个网站,与没有主机 标题,然后分配一个IP地址 该网站。(如果你有一个IP地址 在箱子,然后你可以跳过这)。这个,网站将开 具体IP和会听到的所有 HTTP请求的发送到IP和你 都做了:)

下一步是要确保你的名字 决议工作的配符 查询和答复具有正确的IP 地址。如果你使用微软DNS 服务,它不会允许你去创造 一个'*'记录(假定你已经 创建该区域在DNS MMC), 你需要做到以下几点:

  1. 导航 %windir%\system32\dns\
  2. 找到的区域文件。E.g。
    程序.com.dns,打开它带记事本
  3. 添加一个条目。E.g。
    * A IP.IP.IP.IP
  4. 保存该区域的数据文件
  5. 重新装载的区域数据 在DNS MMC。

请注意,通过这样做,所有* 将响应的知识产权你 配置更早。E.g。abc.mydomain.com,www.mydomain.com, K2k.mydomain.com 等等。

验证工作,试图平 实用 ping (insert anything here).mydomain.com 和你应该 得到的答复。知识产权。知识产权。IP

然后试图浏览http://(插入 任何东西这里)。mydomain.com/您 应该得到相同的网页 已经配置。

来源

您不能创建一个通配符(*)在微软的DNS记录,但你的可以的创建一个通配符CNAME。如果你正在尝试做的是直接的所有子域到一个特定的IP,这会工作。例如,如果您有www.mydomain.com A记录,您可以添加一个CNAME记录*.mydomain.com并指出,在www.mydomain.com。在请求头中的主机仍然会子域,让您的网络应用程序应该能够赶上它,处理它,如果你想要的。

你可以使用IIS如果您使用的网络平台安装(http://www.microsoft.com/web/downloads/platform.aspx)和安装"URL重写"模块。如果添加"一个"记录,如"*.example.com",这将允许所有分领域发送给你的IIS服务器。在IIS服务器,简单地添加一个URL重写规则默认的网站以做任何你愿意的话,例如重定向到另一个网址。当用户进入时,说,"xyz.example.com"你可以重定向到"example.com",并指所有未知域,以根域。该步骤是:

  1. 安装网络平台的安装: http://www.microsoft.com/web/downloads/platform.aspx

    它运行,寻找"URL重写",以及安装。

  2. 去到默认的网站,并开放"URL重写".

  3. 点击"添加规则的(s)"在最右边。

  4. 名称的规则,并设定如下:

    请求的URL:相匹配的模式

    使用:经常表达式

    模式:(.*)

    逻辑分组:所有的比赛

  5. 添加新的条件(点击"添加.."按钮),并设置:

    条件输入:{CACHE_URL}

    检查,如果输入string:相匹配的模式

    模式(根据需要修改):(http|https)://(.*?)\.rootdomain\.顶级域名

    点击[确定]。

  6. 现在滚动行动,并设置:

    行动类型:重定向

    重定向网址(根据需要修改):{C:1}://rootdomain.顶级域名{R:0}

在"{C:#}"和"{R:#}"来自试验窗口,当你点击"试验模式"的按钮旁边regex模式的条目。你可以匹配的一部分服务的价值和重复使用后。

此外,您可能想退房此提示在通过HTTP/HTTPS在URL的("{C:1}"在上述步骤6): http://weblogs.asp.net/owscott/url-rewrite-protocol-http-https-in-the-action

更新2:链接已断开,升级到IIS 10,它支持通配符现在

更新:这工作了一段时间,有一段时间我成了由未来通过多次请求后轰炸。我不推荐这种方法。

请确保您的DNS记录设置正确(*相关CNAME记录 - > @),它会工作得很好。测试具有多个结构域。

链路断开现在以前是 http://pzxc.com/apache-style-wildcard-主机名重写规则式-IIS

对于用户无法升级到IIS10+,它是不是很困难的启用通配符的主机名称支持通过反向代理。

HTTP例如下面,而同时其他安装的是只是几个步骤。

  1. 创建一个全面网站,其结合*:80个没有主机名称。
  2. 建立第一个网站,其结合*:8091没有主机名称。
  3. 创造第二个网站,其结合*:8092没有主机名称。
  4. 测试这两个网站和移动。
  5. 安装ARR和URL重写模块。
  6. 创建重写规定的捕获所有的网站派出请求的两个网站,

    <system.webServer>
        <rewrite>
            <rules>
                <rule name="site1" stopProcessing="true">
                    <match url=".*" />
                    <conditions>
                        <add input="{HTTP_HOST}" pattern="^(.*).site1.com$" />
                    </conditions>
                    <action type="Rewrite" url="http://localhost:8091/{R:0}" />
                </rule>
                <rule name="site2" stopProcessing="true">
                    <match url=".*" />
                    <conditions>
                        <add input="{HTTP_HOST}" pattern="^(.*).site2.com$" />
                    </conditions>
                    <action type="Rewrite" url="http://localhost:8092/{R:0}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
    

注意,在服务器一级,ARR代理模式必须打开,

    <system.webServer>
        <proxy enabled="true" />
    </system.webServer>

IIS10通配主机名称是更简单,也具有更好的表现,因为ARR有其开销(但一般来说可以忽略不计).

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top