URL 重写问题 - 规则用作重定向,但不能用作重写

fse*_*rio 5 redirect cdn url-rewriting

我一直试图弄清楚为什么这个规则作为重定向而不是重写。直到几个小时后我才想到尝试将其作为重定向,令我惊讶的是它起作用了。

你能解释一下为什么第一个有效但第二个无效吗?

重定向

<rule name="Rewrite to images.cdn.com" enabled="true">
<match url="^images/(.+)$" />
<action type="Redirect" url="http://images.cdn.com/{R:1}"/>
</rule>
Run Code Online (Sandbox Code Playgroud)

改写

<rule name="Rewrite to images.cdn.com" enabled="true">
<match url="^images/(.+)$" />
<action type="Rewrite" url="http://images.cdn.com/{R:1}"/>
</rule>
Run Code Online (Sandbox Code Playgroud)

失败的请求日志信息 替换和重写是相同的,这意味着它应该可以工作,因为您可以将该 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>
Run Code Online (Sandbox Code Playgroud)

谢谢你!

ASP.NET/IIS 7.0

fse*_*rio 1

答案可以在这篇文章中找到:Rewrite Subfolder to Subdomain in web.config

基本上缺少一个模块,需要设置代理设置。感谢@cheesmacfly