Использование модуля переопределения 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, а правила супер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 шаблона правил, а также поддерживает подключаемые модули в любом количестве пользовательских шаблонов.
- Пользовательский интерфейс для тестирования шаблонов регулярных выражений и подстановочных знаков. Пользовательский интерфейс для тестирования шаблонов правил предоставляется модулем. С помощью пользовательского интерфейса можно быстро проверить результаты регулярного выражения или шаблона подстановочных знаков в правиле перезаписи. Вы также можете использовать пользовательский интерфейс для устранения неполадок и отладки, связанных с сопоставлением шаблонов.
- Пользовательский интерфейс для управления правилами переопределения и перезаписи карт. Перезапись правил и карт перезаписи можно добавлять, удалять и изменять с помощью модуля перезаписи 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-адресов. В частности, обновление содержит исправления для следующих ошибок:
- ~ оператор в элементе управления веб-сервером ASP.NET разрешается неправильно при использовании перезаписи URL-адресов.
- 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-адресов.
Обучение основам
Ссылки и рекомендации
- Справочник по конфигурации модуля переопределения URL-адресов
- Перезапись URL-адресов и маршрутизация ASP.NET
- Перезапись URL-адресов и фильтрация запросов
- Перезапись URL-адресов для ASP.NET веб-формы
- Разработка шаблонов правил для модуля переопределения URL-адресов
Видеоруководство
Изменения с момента выпуска Go Live
Следующие дополнения, изменения и важные исправления ошибок были внесены в модуль перезаписи URL-адресов с момента выпуска Go Live:
- Добавлены функции обработки строк UrlEncode и UrlDecode.
- Предоставлен доступ к необработанному исходному URL-адресу через переменную сервера UNENCODED_URL. Эта переменная сервера теперь содержит необработанный URL-адрес в кодировке точно так же, как он был запрошен веб-браузером.
- Добавлен пользовательский интерфейс для настройки правил переопределения для маршрутизации запросов приложений (ARR).
- Добавлена поддержка обновления на месте из выпуска Go Live модуля перезаписи URL-адресов.
- Добавлена функциональность для очистки внутреннего кэша, чтобы избежать чрезмерного использования памяти при кэшировании правил перезаписи.
- Исправлена ошибка, связанная с перезаписи URL-адресов, содержащих символы, отличные от ASCII.
- Исправлена ошибка при обработке регулярных выражений, которая приводила к неправильной оценке диапазонов символов для шаблонов без учета регистра.
- Включено обновление модуля IIS FastCGI в пакет установщика.
- В пакет установщика включено обновление для System.Web.dll .
- Включено обновление функции IIS SetUri в пакет установщика.
Известные проблемы
- mod_rewrite правила, использующие переменные сервера REQUEST_URI , могут работать неправильно при импорте с помощью функции переопределения URL-адресов функции правил импорта. Чтобы исправить импортированные правила, можно использовать любой текстовый редактор для открытия файла web.config, содержащего эти правила.
<rewrite>
Найдите раздел, а затем в этом разделе замените все экземпляры строки "{SCRIPT_NAME}" строкой "{URL}". - Аутентификация дайджеста не может использоваться с модулем переопределения URL-адресов.
- ASP.NET проверка подлинности Forms использует перезаписанный URL-адрес для перенаправления. Например, если запрошенный URL-адрес имеет значение "/article.htm", а модуль перезаписи URL-адресов перезаписывает URL-адрес на "/article.aspx", который защищен проверкой подлинности forms, то ASP.NET перенаправит на "/login.aspx? ReturnUrl=%2Farticle.aspx".
- Режим автоматического обнаружения в ASP.NET Формах проверки подлинности использует перезаписанный URL-адрес для перенаправления. Например, если запрошенный URL-адрес имеет значение "/article.htm", а модуль перезаписи URL-адресов перезаписывает URL-адрес на "/article.aspx", который защищен проверкой подлинности forms, то ASP.NET перенаправится на "/article.aspx? AspxAutoDetectCookieSupport=1".
- Режим UseUri в проверке подлинности ASP.NET Forms использует перезаписанный URL-адрес для перенаправления. Например, если запрошенный URL-адрес имеет значение "/article.htm", а модуль перезаписи URL-адресов перезаписывает URL-адрес на "/article.aspx", защищенный проверкой подлинности форм, ASP.NET перенаправляется на "/(S(vy2ebt45imkmjjwboow3l55)/article.aspx".
- ASP.NET перезаписывается обратно на исходный URL-адрес при использовании проверки подлинности на основе URI или состояния сеанса без файлов cookie. Например, при выполнении запроса на "/(S(vy2ebt45imfkmjjwboow3l55))/article.htm" и модуля перезаписи URL-адресов "/article.htm" на "/article.aspx", ASP.NET перезаписывает URL-адрес обратно в "/article.htm", что может привести к ошибке "404 - Файл не найден".
- Модуль IIS DefaultDocument может перенаправляться на URL-адрес перезаписи URL-адреса, когда модуль перезаписи URL-адресов перезаписывается в папку. Например, если URL-адрес подстановки в правиле перезаписи имеет значение "/folder1/folder2", и эти папки существуют в файловой системе и настроены документ по умолчанию, модуль DefaultDocument перенаправит веб-клиенты в "/folder1/folder2/", таким образом, предоставляя перезаписанный URL-адрес. Чтобы предотвратить это, используйте "/" в конце URL-адреса подстановки при перезаписи в папку, например "/folder1/folder2/"