Я изо всех сил пытаюсь заставить работать правило перезаписи IIS.
Старые URL-адреса выглядят так: https://wwww.testserver.com/package.aspx?TrackingNumber=номер
Новое веб-приложение ожидает URL-адреса в следующем формате: https://www.testserver.com/package/номер
В настоящее время у меня есть следующая настройка правила, которая не работает.
<rule name = "Rewrite to new Package site" stopProcessing = "true">
<match url = "^package\.aspx\?TrackingNumber=([_0-9a-z-]+)" />
<action type = "Redirect" url = "https://www.testserver.com/package/{R:1}" logRewrittenUrl = "true" />
</rule>
Интересно, что если я удалю пакет.aspx\? из правила, URL-адреса, подобные этим https://wwww.testserver.com/oldwebsite/TrackingNumber=номер, будут сопоставляться.
В моих тестовых вызовах я заменил пакет.aspx на package.html, и эти URL-адреса также не совпадают. Похоже, что IIS игнорирует URL-адреса с именами файлов в URL-адресе.
Вы можете использовать приведенное ниже правило перезаписи URL для перенаправления https://wwww.testserver.com/package.aspx?TrackingNumber=номер на https://www.testserver.com/package/номер:
<rule name = "test" stopProcessing = "true">
<match url = "(.*)" />
<conditions>
<add input = "{REQUEST_FILENAME}" pattern = "package(.aspx)" />
<add input = "{QUERY_STRING}" pattern = "TrackingNumber=(.*)" />
</conditions>
<action type = "Redirect" url = "http://localhost:2568/package/{C:1}" appendQueryString = "false" />
</rule>
Примечание. Вы можете изменить имя хоста в соответствии с вашими требованиями.
С уважением, Джалпа