我有一个折扣asp.net帐户,它使用IIS 7,我想配置子域以指向站点上的特定应用程序。
例如:
“s1.site.com”将在'site.com/serverone‘上运行该应用程序。我希望子域是不透明的,这样用户就不必处理/serverone部分了。
服务器故障也有类似的问题,但它涉及为每个子域创建一个全新的站点,就像我希望的那样,在每个子域的子目录中路由到独立的应用程序。
另外,折扣asp.net提供了基于脚本的编程解决方案,但这显然是一种不那么理想和灵活的解决方案,可能会导致性能下降(尽管我还没有实际测量这两种方法之间的差异)。
发布于 2010-03-25 08:21:57
使用萨姆·科根提到的URL重写,它自动安装在任何折扣asp.net帐户中(并且可以安装到任何IIS7服务器上),我创建了一个重写规则来解决我的问题。
注意:折扣asp.net的工作人员说,除了编程脚本之外,重写规则是在他们的一个帐户上完成这一任务的唯一方法。折扣asp.net提供了一个编程脚本(我说是hack),它可以将子域路由到子目录,但是我需要比这样的解决方案更灵活和更好的性能。
如果IIS 7重写模块未安装,则必须找到该模块(可能在microsoft的IIS网站上),然后安装它。
在IIS中安装重写模块后,使用IIS管理器连接到它。
在创建规则(而不是应用程序所在的子目录)时,一定要选择网站的根级,这是非常重要的,因为它导致了一个浪费时间的严重错误。重写规则可以在目录层次结构中的不同级别应用,根据规则在目录层次结构中的位置而产生不同的效果(我相信它在创建规则时对本地web.config进行了更改,但我没有花时间确认这一点)。这也意味着当您更改另一个目录中的规则时,您无法看到在其他目录中设置的规则。
选择重写的根目录很重要,因为您希望将所有子域url重新路由到子目录url(除了已经路由到子目录的子目录)。
选择根目录后,双击URL重写,输入重写区域。然后单击“添加规则”(S)并创建“空白规则”。
为了匹配
模式使用:^(?!serverone/)(.*)和set
请求URL:以“匹配模式”,以及
用于正则表达式。
这将通过这个规则路由任何url,忽略那些已经被引导到正确的子域,但是我们希望限制那些在url中没有子域的路由内容的重写,所以接下来我们将添加一个条件。
它只需要一个条件,使用{HTTP_HOST}作为输入,其模式是: s1.site.com
最后,对于Action,您需要一个“Action”的'Rewrite‘,它附加了查询字符串值。
重写url应该是:serverone/{R:0}。
发布于 2010-03-24 14:22:59
我不知道优惠aps.net的控制面板是如何工作的,但是如果您在IIS中直接这样做,您需要为每个应用程序创建一个单独的站点,而不一定是每个子域,如果每个应用程序有多个子域,那么为每个子域URL设置绑定。然后,每个站点的根将是您的应用程序文件夹。不能只使用主站点的子文件夹,因为不能将绑定添加到文件夹中。
或者,您可以使用URL重写将site.com/serverone的请求重写为s1.site.com
https://serverfault.com/questions/125785
复制相似问题