2012-02-15 230 views
3

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

我想改变这一点:http://www.mysite.com/appname/css/file.css

更改为:http://cdn.mysite.com/css/file.css

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

EDIT为了清楚

URL中的appname是在IIS的应用程序。它是任何使用的appname的占位符。它可以是我们目前的设置超过50个不同的应用程序的任何。有总是是一个应用程序的名称。也许这将使规则更容易。

在这种情况下,www.mysite.com的主机名也可以在子域方面略有不同。它可能是www1.mysite.com,www2等。此外,只是意识到我需要维护SSL,如果有的话。

所以,我认为当涉及到它时,我真的只需要将URL减去应用程序名称,然后将其附加到新域中,同时尊重所使用的协议。

原始地址:HTTP(S):// {主机}/{APPNAME}/{URL}

输出:HTTP(S)://cdn.mysite.com/ {URL}

回答

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,...)总是在那里,它必须被忽略的目标网址。

+0

这对调整我的先决条件很有用。我使用* .aspx的通配符匹配{URL}。 – IchibanChef 2012-02-16 14:20:54

+0

我改变了答案以反映你对这个问题的编辑。 – Tomek 2012-02-16 14:45:34

+0

这正是我所需要的。谢谢! – IchibanChef 2012-02-16 15:04:28