Правила IIS UrlRewriter Outbound игнорируются, если задано предварительное условие - PullRequest
0 голосов
/ 05 марта 2011

У меня есть очень простое правило OutBound UrlRewriter, которое переписывает URL-адреса, найденные в теле потока ответов http:

<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, и я хочу сохранить их в таком виде. Без предварительного условия для типа содержимого средство перезаписи URL RewriteModule выдает ошибку 500,52 - « Правила исходящей перезаписи не могут применяться, когда содержимое ответа HTTP закодировано (« gzip »). «

Используя Fiddler, я вижу, что Content-Type: text/html; charset=utf-8 отправляется в заголовке ответа, но UrlRwriter, похоже, не может соответствовать этому.

Почему это происходит?

1 Ответ

3 голосов
/ 26 января 2012

Это потому, что переменная сервера HTTP_ACCEPT_ENCODING не добавлена ​​в список разрешенных переменных сервера.Добавьте его туда (вы можете Google, как в IIS).

...