Перезапись URL: сервер не перезаписывает - PullRequest
0 голосов
/ 31 января 2011

Я пытаюсь переписать URL на моем сервере IIS 7.0 с помощью модуля перезаписи URL, но он не работает.

Я должен создать правило для получения URL-адреса со страницы аутентификации третьей части с токеном "; jsessionid = null", который вызывает ошибку в IIS при вызове моей страницы. Я пытаюсь удалить только оператор "; jsessionid = null". Мне нужны операторы запроса URL для моего приложения ( предыдущий вопрос ).

Я написал это правило:

Шаблон:

(http://.*);jsessionid=null(.*)

Действие:

{R:1}{R:2}

Когда я проверяю шаблон, результат - ОК. Но на практике ничего не происходит, как будто не было модуля перезаписи. В файле Web.config вроде бы все в порядке:

  <system.webServer>
      <modules runAllManagedModulesForAllRequests="true" />
        <rewrite>
            <rules>
                <rule name="refazer_url_autenticador_df" enabled="true" patternSyntax="ECMAScript" stopProcessing="false">
                    <match url="(http://.*);jsessionid=null(.*)" />
                    <action type="Rewrite" url="{R:1}{R:2}" logRewrittenUrl="true" />
                </rule>
            </rules>
        </rewrite>
  </system.webServer>

Когда токен находится в URL, IIS вызывает ошибку:

404 - File or directory not found.

    The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable.

Без токена (URL переписан вручную) все будет хорошо.

Что не так? возможно правило, возможно другая конфигурация МКС?

Спасибо!

1 Ответ

2 голосов
/ 01 февраля 2011

Вы должны использовать Failed Request Tracing, чтобы лучше понять, что происходит и, в частности, фактическое значение, которое вы должны проверить в пользовательском интерфейсе Test Pattern. См .: Трассировка невыполненных запросов для перезаписи URL

Мне кажется, что URL в Match никогда не будет содержать протокол HTTP, а вместо этого будет начинаться с корня сайта. Кроме того, является ли JSessionid частью строки запроса? Если это так, то вам нужно использовать Условие для этого, чтобы захватить этот QUERY_STRING в условии. Наконец, убедитесь, что конечный результат содержит только URL, начинающийся с корня сайта /, а не HTTP. Это требуется только при маршрутизации на другой пул серверов / приложений, но требует, чтобы на компьютере была установлена ​​маршрутизация запросов приложений (ARR).

...