3

由于某种原因,我似乎无法理解这些重写规则,我希望你们能提供帮助。我想要的是一个出站规则,它将重写链接、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,减去应用程序名,并将其附加到新域,同时尊重所使用的协议。

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

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

4

1 回答 1

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,...)始终存在,并且必须在目标 url 中忽略它。

于 2012-02-16T13:43:22.917 回答