Использование модуля переопределения 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

Если у вас уже установлен модуль перезаписи URL-адресов Go Live, пакет установки обновит его до версии 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) или более поздней. Если установить требуемую версию .NET Framework после модуля перезаписи URL-адресов, можно применить обновление ASP.NET, запустив установщик модуля перезаписи URL-адресов и выбрав в диалоговом окне установщика параметр «Восстановить».

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

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

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

Обучение основам

Ссылки и рекомендации

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

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

  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. Включено обновление функции IIS SetUri в пакет установщика.

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

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