IIS7 URL重写出站规则

时间:2012-02-15 22:08:44

标签: asp.net iis url-rewriting arr

由于某些原因,我似乎无法理解这些重写规则,我希望你们可以提供帮助。我想要的是一个出站规则,它将重写链接,img,脚本和输入标签的路径。

我想更改此内容:http://www.mysite.com/appname/css/file.css

对此:http://cdn.mysite.com/css/file.css

所以,基本上我需要交换主机名并从URL中删除应用名称。我已经为* .aspx文件设置了前置条件过滤器,但其余部分对我来说似乎是希腊语。

为清晰起见编辑

上面的URL中的appname是IIS中的应用程序。它是一个占位符,适用于任何正在使用的appname。它可以是我们当前设置的50多个不同应用程序中的任何一个。将始终作为appname。也许这会使规则变得更加容易。

主机名(在本例中为www.mysite.com)在子域方面也可能略有不同。它可能是www1.mysite.com,www2等。另外,只是意识到我需要维护SSL。

所以,我想当它归结为它时,我真的只需要获取URL,减去appname,并将其附加到新域,同时尊重所使用的协议。

原始网址:http(s):// {host} / {appname} / {URL}

输出:http(s)://cdn.mysite.com/ {URL}

1 个答案:

答案 0 :(得分:5)

我认为您的网站域名始终相同,然后此规则应该执行:

<rule name="CdnRule" preCondition="OnlyAspx" >
    <match filterByTags="Img, Input, Link, Script" pattern="^(.+)://.+?\.(.+?)/.+?/(.*)" />
    <action type="Rewrite" value="{R:1}://cdn.{R:2}/{R:3}" />
</rule>

<preConditions>
<preCondition name="OnlyAspx">
    <add input="{PATH_INFO}" pattern=".+\.aspx$" />
</preCondition>
</preConditions>

编辑:根据澄清的问题改变

我认为子域名(www,www2,...)始终存在,必须在目标网址中忽略。