我一直在试图弄清楚为什么这条规则可以作为重定向而不是重写。直到几个小时后,我才想到将其作为重定向尝试,令我惊讶的是它起作用了。
你能解释一下为什么第一个有效而第二个无效吗?
重定向
<rule name="Rewrite to images.cdn.com" enabled="true">
<match url="^images/(.+)$" />
<action type="Redirect" url="http://images.cdn.com/{R:1}"/>
</rule>
改写
<rule name="Rewrite to images.cdn.com" enabled="true">
<match url="^images/(.+)$" />
<action type="Rewrite" url="http://images.cdn.com/{R:1}"/>
</rule>
失败的请求日志信息 替换和重写都是相同的,这意味着它应该可以工作,因为您可以将该 url 复制到浏览器中并且它可以工作。
<EventData>
<Data Name="ContextId">{00000000-0000-0000-6C00-0080000000F8}</Data>
<Data Name="Substitution">http://39e403d64323deb9e704-7fcaccb4b31037dfec2feb2a157f55bc.r52.cf1.rackcdn.com/images/updateprogress.gif</Data>
<Data Name="RewriteURL">http://39e403d64323deb9e704-7fcaccb4b31037dfec2feb2a157f55bc.r52.cf1.rackcdn.com/images/updateprogress.gif</Data>
<Data Name="AppendQueryString">false</Data>
<Data Name="LogRewrittenURL">false</Data>
</EventData>
谢谢!
ASP.NET/IIS 7.0