Использование модуля переопределения 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.
  • Wild карта сопоставление шаблонов. Правила перезаписи могут использовать дикий синтаксис карта для сопоставления шаблонов.
  • Глобальные и распределенные правила перезаписи. Перезапись URL-адресов использует глобальные правила для определения логики перезаписи URL-адресов на уровне сервера. Эти правила определяются в файле конфигурации applicationHost.config, а правила суперcede, настроенные на более низких уровнях в иерархии конфигурации. Модуль также использует распределенные правила для определения логики перезаписи 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 шаблона правил, а также поддерживает подключаемые модули в любом количестве пользовательских шаблонов.
  • Пользовательский интерфейс для тестирования регулярных выражений и шаблонов wild карта. Пользовательский интерфейс для тестирования шаблонов правил предоставляется модулем. С помощью пользовательского интерфейса можно быстро проверка результаты регулярного выражения или дикого шаблона карта в правиле перезаписи. Вы также можете использовать пользовательский интерфейс для устранения неполадок и отладки, связанных с сопоставлением шаблонов.
  • Пользовательский интерфейс для управления правилами переопределения и перезаписи карт. Перезапись правил и карт перезаписи можно добавлять, удалять и изменять с помощью модуля перезаписи 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-адресов функции правил импорта. Чтобы исправить импортированные правила, можно использовать любой текстовый редактор для открытия файла 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(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-адресов перезаписывается в папку. Например, если URL-адрес подстановки в правиле перезаписи имеет значение "/folder1/folder2", и эти папки существуют в файловой системе и настроены документ по умолчанию, модуль DefaultDocument перенаправит веб-клиенты в "/folder1/folder2/", таким образом, предоставляя перезаписанный URL-адрес. Чтобы предотвратить это, используйте "/" в конце URL-адреса подстановки при перезаписи в папку, например "/folder1/folder2/"