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

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

Сведения о модуле переопределения URL-адресов

Модуль переопределения URL-адресов (Майкрософт) 2.0 для IIS 7 и более поздних версий позволяет администраторам IIS создавать мощные настраиваемые правила для сопоставления URL-адресов запросов с понятными URL-адресами, которые пользователям легче запомнить и найти в поисковых системах. Модуль переопределения URL-адресов можно использовать для выполнения задач по обработке URL-адресов, в том числе:

  • Определите эффективные правила для преобразования сложных URL-адресов в простые и согласованные веб-адреса.
  • Легко заменяйте URL-адреса веб-приложений, чтобы получать результаты, понятные для пользователей и поисковых систем.
  • Перепишите URL-адреса на основе заголовков HTTP и переменных сервера IIS.
  • Выполнять перенаправления, отправлять пользовательские ответы или останавливать HTTP-запросы на основе логики, выраженной в правилах перезаписи.
  • Управление доступом к содержимому веб-сайта на основе сегментов URL-адресов или метаданных запроса.

Модуль Переопределения URL-адресов доступен как в виде скачивания, который можно установить на собственном сервере IIS, так и на облачной платформе веб-сайтов Microsoft Azure .

Функции переопределения URL-адресов 2.0

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

  • Механизм перезаписи URL-адресов на основе правил. Правила перезаписи определяют логику, используемую для анализа URL-адресов запросов, и сопоставляют их с повторными URL-адресами, если URL-адрес запроса соответствует определенному правилу. Администраторы веб-сервера и сайта могут использовать наборы правил перезаписи для определения логики перезаписи URL-адресов.
  • Сопоставление шаблонов регулярных выражений. Правила перезаписи могут использовать синтаксис регулярных выражений для сопоставления шаблонов, как определено в ECMA-262.
  • Сопоставление шаблонов с подстановочными знаками. Правила перезаписи могут использовать синтаксис с подстановочными знаками для сопоставления шаблонов.
  • Глобальные и распределенные правила перезаписи. Переопределение URL-адресов использует глобальные правила для определения логики переопределения URL-адресов на уровне сервера. Эти правила определяются в файле applicationHost.config и заменяют правила, настроенные на более низких уровнях в иерархии конфигурации. Модуль также использует распределенные правила для определения логики перезаписи URL-адресов, относящегося к определенной конфигурации область. Этот тип правила можно определить на любом уровне конфигурации с помощью файлов Web.config.
  • Доступ к переменным сервера и заголовкам HTTP. Переменные сервера и заголовки HTTP предоставляют дополнительные сведения о текущих HTTP-запросах. Эти сведения можно использовать для настройки правил перезаписи или для создания выходного URL-адреса.
  • Различные действия правил. Вместо перезаписи URL-адреса правило может выполнять другие действия, такие как выдача перенаправления HTTP, прерывание запроса или отправка пользовательского кода состояния HTTP-клиентам.
  • Поддержка кэширования выходных данных в режиме ядра IIS и пользовательском режиме. Кэширование выходных данных IIS обеспечивает значительное повышение производительности веб-приложений. Модуль переопределения URL-адресов полностью совместим с обоими типами кэширования выходных данных. Это означает, что можно безопасно кэшировать ответы на перезаписанные URL-адреса и тем самым повысить производительность веб-приложений, использующих перезапись URL-адресов.
  • Функции обработки строк. Встроенные функции обработки строк можно использовать для преобразования URL-адресов в нижний регистр, а также для кодирования и декодирования URL-адресов.
  • Переписать карты. Карта перезаписи — это произвольная коллекция пар "имя-значение". Вы можете использовать карту перезаписи в правилах перезаписи для создания URL-адреса подстановки. Карты перезаписи особенно полезны при наличии большого набора правил перезаписи, все из которых используют статические строки (т. е. сопоставление шаблонов не используется). В таких случаях вместо определения большого набора простых правил перезаписи можно поместить все сопоставления между ними в карту перезаписи, используя входной URL-адрес в качестве ключа и URL-адрес подстановки в качестве значения. Затем можно создать одно правило перезаписи, которое ссылается на карту перезаписи для поиска URL-адреса подстановки на основе входного URL-адреса.
  • Поддержка трассировки неудачных запросов. Трассировку неудачных запросов IIS можно использовать для устранения ошибок, связанных с перезаписью URL-адресов.
  • Шаблоны правил. Шаблон правила — это расширение пользовательского интерфейса модуля переопределения URL-адресов, которое упрощает создание правил перезаписи для конкретной задачи. Модуль включает 3 шаблона правил, а также поддерживает подключение к любому количеству пользовательских шаблонов.
  • Пользовательский интерфейс для тестирования шаблонов регулярных выражений и подстановочных знаков. С модулем предоставляется пользовательский интерфейс для тестирования шаблонов правил. С помощью пользовательского интерфейса можно быстро проверка результаты регулярного выражения или шаблона с подстановочными знаками в правиле перезаписи. Вы также можете использовать пользовательский интерфейс для устранения неполадок и отладки проблем, связанных с сопоставлением шаблонов.
  • Пользовательский интерфейс для управления правилами перезаписи и картами перезаписи. Правила перезаписи и карты перезаписи можно добавлять, удалять и изменять с помощью модуля переопределения URL-адресов из диспетчера IIS.
  • Пользовательский интерфейс для импорта правил mod_rewrite. Модуль переопределения URL-адресов содержит пользовательский интерфейс для преобразования правил перезаписи из формата mod_rewrite в формат IIS.

Где получить модуль переопределения URL-адресов

Дополнительные сведения и сведения о скачивании модуля см. на домашней странице расширения переопределения URL-адресов.

Обновление с выпуска Go Live

Если у вас уже установлен выпуск go Live модуля переопределения URL-адресов, пакет установки обновит его до версии 2.0. Все правила перезаписи в файлах ApplicationHost.config и Web.config будут сохранены.

обновление ASP.NET

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

  1. Оператор ~ в ASP.NET серверный веб-элемент управления разрешается неправильно при использовании переопределения URL-адресов.
  2. ASP.NET свойство SiteMap.CurrentNode возвращает значение NULL, если карта сайта содержит виртуальные URL-адреса.

Обновление применяется только в том случае, если компьютер, на котором установлен модуль переопределения URL-адресов, имеет платформа .NET Framework версии 3.5 с пакетом обновления 1 (SP1) или более поздней. Если после установки модуля переопределения URL-адресов устанавливается требуемая версия платформа .NET Framework, можно применить обновление ASP.NET, запустив установщик модуля переопределения URL-адресов и выбрав в диалоговом окне установщика параметр Восстановить.

Дополнительные сведения об этих и других ASP.NET проблемах, связанных с переписыванием URL-адресов, см. в статье Переопределение URL-адресов для ASP.NET Web Forms.

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

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

Изучение основ

Справочные материалы и рекомендации

Видеоруководство

Изменения с момента выпуска Go Live

С момента выпуска Go Live в модуль переопределения URL-адресов были внесены следующие дополнения, изменения и важные исправления ошибок:

  1. Добавлены функции обработки строк UrlEncode и UrlDecode.
  2. Предоставляется доступ к исходному URL-адресу с помощью переменной сервера UNENCODED_URL. Эта переменная сервера теперь содержит необработанный закодированный URL-адрес в том виде, в котором он был запрошен веб-браузером.
  3. Добавлен пользовательский интерфейс для настройки правил перезаписи для маршрутизации запросов приложений (ARR).
  4. Добавлена поддержка обновления на месте из выпуска Go Live модуля переопределения URL-адресов.
  5. Добавлена функция очистки внутреннего кэша, чтобы избежать чрезмерного использования памяти при кэшировании правил перезаписи.
  6. Исправлена ошибка, связанная с переписыванием URL-адресов, содержащих символы, отличные от ASCII.
  7. Исправлена ошибка при обработке регулярных выражений, которая приводила к неправильной оценке диапазонов символов для шаблонов без учета регистра.
  8. В пакет установщика добавлено обновление для модуля IIS FastCGI .
  9. Включено обновление для System.Web.dll в пакет установщика.
  10. В пакет установщика добавлено обновление для функции SetUri IIS.

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

  1. mod_rewrite правила, использующие переменные сервера REQUEST_URI , могут работать неправильно при импорте с помощью функции " Перезапись URL-адресов". Чтобы исправить использование импортированных правил, можно открыть файл Web.config, содержащий эти правила, в любом текстовом редакторе. <rewrite> Найдите раздел и замените все экземпляры строки "{SCRIPT_NAME}" строкой "{URL}".
  2. Дайджест-проверку подлинности нельзя использовать с модулем переопределения URL-адресов.
  3. ASP.NET проверка подлинности с помощью форм использует перезаписанный URL-адрес для перенаправления. Например, если запрошенный URL-адрес — "/article.htm", а модуль переопределения URL-адресов перезаписывает URL-адрес на "/article.aspx", защищенный проверкой подлинности с помощью форм, то ASP.NET перенаправляется на "/login.aspx? ReturnUrl=%2Farticle.aspx".
  4. Режим автоматического обнаружения в ASP.NET проверка подлинности с помощью форм использует перезаписанный URL-адрес для перенаправления. Например, если запрошенный URL-адрес — "/article.htm", а модуль переопределения URL-адресов перезаписывает URL-адрес на "/article.aspx", защищенный проверкой подлинности с помощью форм, то ASP.NET перенаправляется на "/article.aspx? AspxAutoDetectCookieSupport=1".
  5. Режим UseUri в ASP.NET проверка подлинности с помощью форм использует перезаписанный URL-адрес для перенаправления. Например, если запрошенный URL-адрес — "/article.htm" и модуль переопределения URL-адресов перезаписывает URL-адрес на "/article.aspx", защищенный проверкой подлинности с помощью форм, то ASP.NET перенаправляется на "/(S(vy2ebt45imkmjjwboow3l55))/article.aspx".
  6. ASP.NET перезаписывается обратно на исходный URL-адрес при использовании проверки подлинности на основе URI или состояния сеанса без файлов cookie. Например, если выполняется запрос на "/(S(vy2ebt45imfkmjjwboow3l55)))/article.htm" и модуль перезаписи URL-адресов "/article.htm" на "/article.aspx", ASP.NET перезаписывает URL-адрес обратно на "/article.htm", что может привести к ошибке "404 — файл не найден".
  7. Модуль IIS DefaultDocument может перенаправляться на перезаписанный URL-адрес, когда модуль перезаписи URL-адресов перезаписывается в папку. Например, если URL-адрес подстановки в правиле перезаписи — /folder1/folder2 и эти папки существуют в файловой системе и имеют настроенный документ по умолчанию, модуль DefaultDocument перенаправит веб-клиенты в папку /folder1/folder2/, предоставляя таким образом перезаписанный URL-адрес. Чтобы предотвратить это, используйте "/" в конце URL-адреса подстановки при перезаписи в папку, например "/folder1/folder2/".