Использование модуля переопределения URL-адресов 2.0

Руслан Якушев

Введение

Этот раздел документации относится к перезаписи URL-адресов 2.0 для IIS 7.

Перезапись URL-адресов 2.0 для IIS 7 и более поздних версий — это добавочный выпуск, включающий все функции версии 1.1 и добавляющий поддержку расширяемости .NET и перезаписи исходящего ответа. В частности, его можно использовать для:

  • Реализация сложной логики перезаписи с помощью поставщиков перезаписи, написанных в .NET
  • Замените URL-адреса, созданные веб-приложением в HTML-коде ответа, на более понятный для пользователя и понятный для поисковых систем эквивалент.
  • Измените ссылки в разметке HTML, созданной веб-приложением за обратным прокси-сервером.
  • Исправьте содержимое любого HTTP-ответа с помощью сопоставления шаблонов регулярных выражений.
  • Изменение заголовков HTTP-запросов и ответов и переменных сервера IIS.

Компоненты

Переопределение URL-адресов версии 2.0 включает следующие ключевые функции:

  • Настраиваемые поставщики перезаписи (новые в RTW). Поставщики перезаписи могут использоваться, когда логика перезаписи URL-адресов не может быть выражена с точки зрения шаблонов регулярных выражений или когда требуется принимать решения о перезаписи на основе данных, хранящихся за пределами web.config файла (например, базы данных SQL или текстовых файлов). Поставщики перезаписи клиентов можно реализовать на любом языке .NET.
  • Механизм перезаписи ответов на основе правил. Правила исходящего трафика используются для выражения логики того, с чем сравнивать части ответа и что делать, если сравнение прошло успешно. Администраторы веб-сервера и сайта могут использовать правила исходящего трафика для определения сложной логики перезаписи ответов.
  • Перезапись содержимого определенных HTML-тегов. Вместо сканирования всего ответа на определенное совпадение можно настроить для просмотра только определенных html-тегов, таких как <a>, <img> и т. д. Таким образом, шаблон значительно упрощается, а процесс применения правила к содержимому выполняется гораздо быстрее по сравнению с применением шаблона ко всему ответу.
  • Предварительные условия для правил для исходящего трафика. Применение правил перезаписи к каждому ответу является дорогостоящей операцией и не требуется в большинстве случаев. Предварительные условия используются для проверка метаданных ответа, чтобы определить, следует ли применять оценку правил для исходящего трафика.
  • Перезапись переменных сервера и заголовков HTTP-запросов. Различные переменные сервера IIS и заголовки HTTP-запросов можно задать с помощью правил перезаписи.
  • Перезапись заголовков HTTP-ответов. Правила перезаписи исходящего трафика можно использовать для изменения любых существующих заголовков HTTP-ответов или для задания новых.
  • Список разрешений для переменных сервера. Чтобы правила распределенного перезаписи случайно или намеренно изменяли переменные сервера IIS, которые могут повлиять на безопасность или поведение среды выполнения веб-приложения, изменяемые переменные сервера теперь необходимо явно добавить в список разрешений.
  • Функция HtmlEncode. При исходящем перезаписи часто используются ненадежные данные (например, строка запроса или заголовки HTTP) для создания строки замены для вставки в HTTP-ответ. В таких случаях функция HtmlEncode должна использоваться для предотвращения вставки клиентских скриптов в ответ, что может привести к уязвимости межсайтовых сценариев.
  • Отслеживание групп записи в разных условиях правила. Логика обратной ссылки на условия в переопределении URL-адресов 1.1 работала только с последними соответствующими условиями. В версии 2 можно настроить логику обратной ссылки для работы со всеми соответствующими условиями.
  • Шаблоны правил для оптимизации поисковой системы (новые в RTW). Три новых шаблона правил упрощают создание правил перенаправления, которые будут принудительно использовать канонические URL-адреса для веб-страниц на вашем сайте.
  • Шаблон правила обратного прокси-сервера (новый в RTW). Этот шаблон можно использовать для быстрого создания правил перезаписи для входящего и исходящего трафика, реализующих конфигурацию обратного прокси-сервера.
  • Ведение журнала перезаписанных URL-адресов. Правила перезаписи можно настроить для регистрации перезаписываемого URL-адреса в журналах IIS W3C, а не для записи первоначально запрошенного URL-адреса.
  • Обновлен пользовательский интерфейс в диспетчере IIS. Пользовательский интерфейс был значительно улучшен, чтобы лучше представить конфигурацию модуля и упростить такие распространенные задачи, как настройка правил перезаписи и условий перезаписи.

Установка модуля

Скачайте переопределение URL-адресов 2.0, используя ссылки на домашней странице модуля по адресу https://www.iis.net/extensions/urlrewrite

Примечание

  • Если предыдущая версия переопределения URL-адресов, например версии 1.0 и 1.1, уже установлена, она будет обновлена до версии 2.0.
  • Если версия RC для переопределения URL-адресов 2.0 уже установлена, она будет обновлена до версии RTW.

Известные проблемы

  1. Перезапись ответа не работает со статическим сжатием. Чтобы использовать перезапись ответов, необходимо отключить статическое сжатие IIS.
  2. Правила для исходящего трафика не применяются к ответам с закодированным фрагментом передачи, если включен параметр rewriteBeforeCache . Присвойте параметру rewriteBeforeCache значение false, если необходимо перезаписать ответы, закодированные фрагментированными данными передачи.

Установка примеров расширяемости

Примеры расширяемости переопределения URL-адресов включают сборки .NET и исходный код, реализующие следующие поставщики:

  • DbProvider — этот поставщик можно использовать для получения сопоставлений перезаписи из таблицы базы данных SQL Server путем выполнения хранимой процедуры;
  • FileMapProvider — этот поставщик можно использовать для получения сопоставлений перезаписи, хранящихся в текстовом файле;
  • FileContainsProvider — этот поставщик можно использовать для проверка, является ли какая-либо строка в текстовом файле подстрокой входной строки поставщика.

Скачайте примеры расширяемости переопределения URL-адресов из коллекции кода MSDN.

Использование модуля

В этих статьях рассматриваются функциональные возможности перезаписи URL-адресов версии 2.0 и объясняется, как использовать его для выполнения распространенных сценариев перезаписи.

Пошаговые руководства

Справочник по функциональным возможностям