如何configurationIIS 7(折扣asp.net)指向应用程序子目录的子域?

我有一个折扣的asp.net帐户,它使用IIS 7,我想configuration子域指向在网站上的特定应用程序。

例如:

's1.site.com'将运行在“site.com/serverone”的应用程序。 我想这个子域是不透明的,所以用户不必处理/ serverone部分。

关于服务器故障也有类似的问题,但是它涉及到为每个子域创build一个全新的站点,因为我宁愿只是路由到每个子域的子目录中的独立应用程序。

另外,asp.net提供了一个基于脚本的编程解决scheme,但这显然是一个不太理想和灵活的解决scheme,可能会导致性能下降(虽然我没有真正衡量这两种方法之间的差异)。

我不确定aps.net的控制面板是如何工作的,但是如果您直接在IIS中执行此操作,则需要为每个应用程序创build一个单独的站点,而不必为每个子站点创build一个单独的站点(如果每个应用程序有多个子站点,然后为每个subdoamins URL设置绑定。 每个网站的根目录就是你的应用程序文件夹。 您不能只使用主站点的子文件夹,因为您不能将绑定添加到文件夹。

或者,您可以使用URL重写来将site.com/serverone的请求重写为s1.site.com

使用URL重写 ,山姆Cogen提到,这是自动安装在任何折扣asp.net帐户(并可以安装到任何IIS7服务器),我创build了一个重写规则来解决我的问题。

注意 :asp.net的工作人员表示,重写规则是在程序脚本之外的唯一方法之一, 折扣asp.net提供了一个程序化的(我说黑客)脚本,将子域名路由到子目录,但我需要更多的灵活性和性能比这样的解决scheme将提供。

如果未安装IIS 7重写模块,则必须find该模块(可能位于Microsoft的IIS网站),然后进行安装。

一旦重写模块安装在IIS中,使用IISpipe理器连接到它。

确保在创build规则(而不是应用程序所在的子目录)时select了网站的根级别 ,这非常重要,因为这导致了一个浪费了一段时间的严重错误。 重写规则可以在目录层次结构中的不同级别上应用,从而导致规则根据目录层次结构中规则所在的位置而具有不同的效果(我相信当规则是对本地web.config进行更改时创build,但我没有花时间来确认这一点)。 这也意味着,当您改变另一个目录中的规则时,您无法看到在其他目录中设置的规则。

select根目录进行重写很重要,因为您要将所有子域urls重新路由到子目录url(除了已经路由到子目录的url)。

select根网站目录后,双击URL重写 ,进入重写区域。 然后点击添加规则并创build一个空白规则。

对于匹配

模式使用: ^(?!serverone/)(.*)并设置

请求的URL: 匹配模式 ,和

使用 正则expression式

这将通过此规则路由任何url,忽略那些已经前往正确的子域名,但我们想限制重写路由的东西,没有在URL中的子域名,所以接下来,我们将添加一个条件。

它只需要一个条件,使用{HTTP_HOST}进行input ,而它的模式是:s1.site.com

最后,对于Action,需要一个“ Rewrite ”的“ Action Type ”来追加查询string值。

重写url应该是: serverone/{R:0}