Множественные разряженные перенаправления URL с использованием IIS Rewrite

Вопрос или проблема

У меня странный сценарий, когда нам нужно вывести из эксплуатации старую учебную среду, которая была разработана внутренне. Проблема в том, что у нас есть более 6000 URL-адресов, которые нужно перенаправить/перезаписать на различные системы в нашей среде. В качестве примера:

Учебные курсы необходимо перенаправить с https://rxtraining.domain.com/training/course.php?courseid=42654 на совершенно новую структуру по адресу https://techarea.domain.com/xyz/abc/coursework/course.php?courseid=123456.

Кроме того, к этим курсам привязаны различные ресурсы, которые необходимо перенаправить/перезаписать с https://rxtraining.domain.com/training/assets/asset1.php?assetid=45678 на https://domain.sharepoint.com/sitepages/asset40521.aspx.

Все это к тому, что поскольку нет коррелированного шаблона, было бы проще просто иметь прямую таблицу соответствия, где мы ищем старый URL и предоставляем новый URL. Я проработал примеры здесь: https://learn.microsoft.com/en-us/iis/extensions/url-rewrite-module/using-custom-rewrite-providers-with-url-rewrite-module. Я не могу заставить пример с базой данных выполнять даже запрос, поэтому я попробовал FileMapProvider, который показал больше успеха, но я получил сообщение об ошибке 500.50.

Мое правило следующее:

<rule name="FileMapProvider" stopProcessing=true>
<match url="(.*)" />
<conditions>
    <add input="{FileMap:{R:0}}" pattern="(.+)" />
</conditions>
<action type="Redirect" url="{C:0}" />
</rule>

Я хоть немного близок?

Ответ или решение

Переадресация множества разрозненных URL с использованием IIS Rewrite

В условиях деактивации устаревшей среды обучения, вам необходимо выполнить переадресацию более 6,000 URL-адресов на различные системы. Эта задача потребует детального подхода, чтобы избежать ошибок и обеспечить корректную маршрутизацию.

Проблема

Ваши ссылки, такие как:

  • Старый URL: https://rxtraining.domain.com/training/course.php?courseid=42654
  • Новый URL: https://techarea.domain.com/xyz/abc/coursework/course.php?courseid=123456

или

  • Старый URL: https://rxtraining.domain.com/training/assets/asset1.php?assetid=45678
  • Новый URL: https://domain.sharepoint.com/sitepages/asset40521.aspx

не следуют строгому шаблону, что затрудняет создание универсальных правил для переадресации. Вы упомянули использования библиотеки FileMapProvider, и это подходит для вашей задачи, однако возникла ошибка 500.50, что свидетельствует о проблемах с определением или обработкой мапы.

Решение

Шаг 1: Подготовка мапы URL

Чтобы управлять вашей переадресацией, стоит создать файл мапы в формате CSV или JSON, где каждая строка будет содержать старый URL и соответствующий новый URL. Например:

old_url,new_url
https://rxtraining.domain.com/training/course.php?courseid=42654,https://techarea.domain.com/xyz/abc/coursework/course.php?courseid=123456
https://rxtraining.domain.com/training/assets/asset1.php?assetid=45678,https://domain.sharepoint.com/sitepages/asset40521.aspx

Шаг 2: Конфигурация IIS URL Rewrite

Предположим, вы решили использовать FileMapProvider. Вам понадобится убедиться, что файл мапы находится по правильному пути и доступен для приложения. Используйте следующий код для настройки вашего правила:

<rewrite>
    <outboundRules>
        <rule name="FileMap Redirect" stopProcessing="true">
            <match url="(.*)" />
            <conditions>
                <add input="{FileMapProvider:URLMapping:{R:0}}" pattern="(.+)" />
            </conditions>
            <action type="Redirect" url="{C:0}" redirectType="Permanent" />
        </rule>
    </outboundRules>
</rewrite>

Убедитесь, что:

  1. Имя файла мапы указано корректно и файл доступен для чтения.
  2. Путь к файлу является абсолютным или правильно настроенным относительно корня вашего веб-сайта.

Шаг 3: Диагностика ошибок

Ошибка 500.50 может быть связана с неправильной конфигурацией либо файла мапы, либо самого IIS:

  1. Убедитесь, что файл мапы корректно загружен и доступен.
  2. Проверьте журналы IIS на наличие дополнительных деталей по ошибке.
  3. Используйте функцию отладки, чтобы протестировать каждую переадресацию.

Заключение

Реализация множества разрозненных URL-адресов требует создания точной мапы и настройки надежной системы переадресации через модули IIS. Следуя указанным шагам, вы сможете эффективно адресовать указанные URL на новые системы, минимизируя возможные сбои и сложности.

Если вам необходимо дополнительное руководство по работе с IIS или вы сталкиваетесь с другими вопросами, рекомендуется обратиться к специализированной документации или профессиональным консультантам.

Оцените материал
Добавить комментарий

Капча загружается...