我在运行Windows Server 2012 R2的网络服务器上安装了Url Rewrite Module,其网址如下: http://staging.mysite.net/
我将图像,字体,脚本等加载到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>
即使文件存在,所有内容都将作为404错误返回。例如,我的页面引用了 /images/en-us/logo.png 。我确认 http://cdn.staging.mysite.net/images/en-us/logo.png 确实存在。
此外,Url Rewrite管理单元的“测试模式”功能显示当您输入 images / en-us / logo.png时,{R1}会返回en-us / logo.png 或 /images/en-us/logo.png 进入“输入要测试的数据”字段。
我暂时尝试使用type =“Redirect”而不是type =“Rewrite”,但这会导致来自服务器的重复请求/响应。第一个是301,第二个是200.我只想要200响应。
++显然,mysite.net并不是我的域名,仅用于示例目的。
答案 0 :(得分:5)
我正在使用以下规则来重写我/assets
文件夹下所有内容的所有请求:
<rewrite>
<rules>
<rule name="Rewrite to CDN">
<match url="^assets/(.+)$" />
<action type="Rewrite" url="http://cdn.domain.com/{R:0}" />
</rule>
</rules>
</rewrite>