0

HTTP 応答ストリームの本文で見つかった URL を書き換える非常に単純な OutBound UrlRewriter ルールがあります。

<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>

問題は、電源を入れるとすぐにpreCondition書き換えが行われないことです。

ページは ASP.NET ページであり、ASP.NET スクリプト リソースを使用するため、前提条件を使用できる必要があります<script src="ScriptResource.axd?d=...." type="text/javascript" />

デフォルトでは、スクリプト リソースは gzip 圧縮されており、そのままにしておく必要があります。コンテンツ タイプの前提条件がない場合、URLRewriteModuleリライタは 500.52 エラーをスローします

Fiddler を使用するContent-Type: text/html; charset=utf-8と、応答ヘッダーで送信されていることがわかりますが、UrlRwriter はこれと一致しないようです。

なぜこうなった?

4

1 に答える 1

3

これはHTTP_ACCEPT_ENCODING、許可されたサーバー変数リストにサーバー変数が追加されていないためです。そこに追加します (IIS でハウツーをググることができます)。

于 2012-01-26T13:23:49.633 に答える