Настройте заголовок HTTP в модуле перезаписи URL IIS - PullRequest
4 голосов
/ 11 октября 2011

Я застрял по простому исходящему правилу, я хочу изменить HTTP Content-Type на application / atom + xml , если URL-адрес точно соответствует http://wayneye.com/Feeds/Atom

Мое правило XML:

<outboundRules>
<rule name="AtomFeedsIMEType" patternSyntax="ExactMatch">
    <match serverVariable="RESPONSE_CONTENT_TYPE" pattern="http://{HTTP_HOST}/Feeds/Atom" />
    <action type="Rewrite" value="application/atom+xml" />
</rule>

Нужна помощь ...

1 Ответ

6 голосов
/ 12 октября 2011

Вы сопоставляете переменную сервера с полным URL-адресом, включая имя домена. Это не сработает ;-). Неважно, каково значение Content-Type, вы все равно его замените, чтобы вы могли сопоставить его с чем угодно. Чтобы не заменять его на каждой странице, необходимо добавить предварительное условие для сопоставления только запросов, начинающихся с / Feeds / Atom (в {REQUEST_URI}). Вот пример:

<outboundRules>
  <rule name="AtomFeedsIMEType" preCondition="Match atom feeds">
    <match serverVariable="RESPONSE_Content_Type" pattern="(.*)" negate="false" />
    <action type="Rewrite" value="application/atom+xml" replace="true" />
  </rule>
  <preConditions>
    <preCondition name="Match atom feeds">
      <add input="{REQUEST_URI}" pattern="^/Feeds/Atom" />
    </preCondition>
  </preConditions>
</outboundRules>

Чтобы это работало, сервер должен быть настроен на изменение заголовка Content-Type. Это можно сделать либо на уровне сервера, либо на уровне сайта, но это должен сделать администратор. Это устанавливается в applicationHost.config, а не в web.config. Вот часть applicationHost.config, которая позволяет это:

<location path="your_site_name">
  <system.webServer>
    <rewrite>
      <allowedServerVariables>
        <add name="CONTENT_TYPE" />
      </allowedServerVariables>
    </rewrite>
  </system.webServer>
</location>

Вы также можете разрешить это в графическом интерфейсе, используя ссылку Просмотр серверных переменных в разделе действий на главном экране URLRewrite. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...