Iis 7 如果设置了前提条件,则忽略IIS URL重写器出站规则

Iis 7 如果设置了前提条件,则忽略IIS URL重写器出站规则,iis-7,url-rewriting,urlrewriter,Iis 7,Url Rewriting,Urlrewriter,我有一个非常简单的出站url重写器规则,可以重写它在http响应流主体中找到的url: <rewrite> <outboundRules> <rule name="Scripted" preCondition="IsHtml" patternSyntax="ECMAScript" stopProcessing="false"> <match filterByTags

我有一个非常简单的出站url重写器规则,可以重写它在http响应流主体中找到的url:

<rewrite>
  <outboundRules>
    <rule name="Scripted" 
          preCondition="IsHtml" 
          patternSyntax="ECMAScript" 
          stopProcessing="false">
      <match filterByTags="None" pattern="http://someurl.com" />
      <action type="Rewrite" value="http://anotherurl.com" />
    </rule>

    <preConditions>
      <preCondition name="IsHtml" patternSyntax="Wildcard">
        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
      </preCondition>
    </preConditions>

  </outboundRules>
</rewrite>

问题是,只要我打开
先决条件
,就不会发生重写

我需要能够使用前置条件,因为该页面是ASP.NET页面,并且使用ASP.NET脚本资源,例如

默认情况下,脚本资源是gzip压缩的,我希望保持这种方式。如果没有内容类型先决条件,URL重写器
RewriteModule
将抛出500.52错误-“当HTTP响应的内容被编码(“gzip”)时,无法应用出站重写规则。”

使用Fiddler,我可以看到
内容类型:text/html;charset=utf-8
正在响应头中发送,但UrlWriter似乎无法匹配


为什么会发生这种情况?

这是因为服务器变量
HTTP\u ACCEPT\u ENCODING
未添加到允许的服务器变量列表中。将其添加到那里(您可以在IIS中用谷歌搜索how to)。

这是因为服务器变量
HTTP\u ACCEPT\u ENCODING
未添加到允许的服务器变量列表中。将它添加到那里(你可以在IIS中用谷歌搜索how to)。

另一个问题/答案在这里有帮助-另一个问题/答案在这里有帮助-