使用IIS Url重写模块指向Azure CDN

使用IIS Url重写模块指向Azure CDN,iis,azure,url-rewrite-module,azure-cdn,Iis,Azure,Url Rewrite Module,Azure Cdn,我在运行Windows server 2012 R2的web服务器上安装了Url重写模块,Url如下: 我将图像、字体、脚本等加载到Azure CDN中 我在我的Web.config中指定了以下规则: <rewrite> <rules> <rule name="CDN: fonts" stopProcessing="true"> <match url="^fonts/(.*)" />

我在运行Windows server 2012 R2的web服务器上安装了Url重写模块,Url如下:

我将图像、字体、脚本等加载到Azure CDN中

我在我的Web.config中指定了以下规则:

<rewrite>
    <rules>
        <rule name="CDN: fonts" stopProcessing="true">
            <match url="^fonts/(.*)" />
            <action type="Rewrite" url="http://cdn.staging.mysite.net/fonts/{R:1}" appendQueryString="true" />
        </rule>
        <rule name="CDN: images" stopProcessing="true">
            <match url="^images/(.*)" />
            <action type="Rewrite" url="http://cdn.staging.mysite.net/images/{R:1}" appendQueryString="true" />
        </rule>
        <rule name="CDN: pdf" stopProcessing="true">
            <match url="^pdf/(.*)" />
            <action type="Rewrite" url="http://cdn.staging.mysite.net/pdf/{R:1}" appendQueryString="true" />
        </rule>
        <rule name="CDN: scripts" stopProcessing="true">
            <match url="^scripts/(.*)" />
            <action type="Rewrite" url="http://cdn.staging.mysite.net/scripts/{R:1}" appendQueryString="true" />
        </rule>
        <rule name="CDN: style" stopProcessing="true">
            <match url="^style/(.*)" />
            <action type="Rewrite" url="http://cdn.staging.mysite.net/style/{R:1}" appendQueryString="true" />
        </rule>
    </rules>
</rewrite>

确实存在

此外,Url重写管理单元的“测试模式”功能显示,当您在“要测试的输入数据”字段中输入images/en-us/logo.png或/images/en-us/logo.png时,{R1}返回en-us/logo.png

我曾经尝试过使用type=“Redirect”而不是type=“Rewrite”,但这会导致来自服务器的重复请求/响应。第一个是301,第二个是200。我只想要200份回复


++显然,mysite.net不是我真正的域,仅用于示例目的。

我使用以下规则重写我的
/assets
文件夹下的所有请求,该文件夹有效:

<rewrite>
  <rules>
    <rule name="Rewrite to CDN">
      <match url="^assets/(.+)$" />
      <action type="Rewrite" url="http://cdn.domain.com/{R:0}" />
    </rule>
   </rules>
</rewrite>


奇怪的是,我所看到的唯一不同之处是您没有使用stopProcessing=“true”或appendQueryString=“true”。今晚我将尝试从我的规则中删除这些规则,看看这是否能解决问题。同时,对匹配URL使用稍微不同的正则表达式,并在重写URL时{R:0}而不是{R:1}更改我的规则以匹配您的样式,removed stopProcessing=“true”,removed appendQueryString=“true”,更改了正则表达式以匹配您的模式,并将URL切换为与您的相似(没有文件夹名称,使用{R:0})。还是不走运!它看起来仍然不工作。是否正在使用应用程序请求路由模块?我刚刚找到了这个答案:是的,使用应用程序请求路由,我忘记了“启用代理”在默认情况下是禁用的,一旦您启用它,它应该立即工作。