Правило перезаписи IIS не срабатывает, если в URL-адресе указано имя файла с расширением - PullRequest
0 голосов
/ 29 мая 2019

Я изо всех сил пытаюсь заставить работать правило перезаписи IIS.

Старые URL-адреса выглядят так: https://wwww.testserver.com/package.aspx?TrackingNumber=number

Новое веб-приложение ожидает URL-адреса в этом формате: https://wwww.testserver.com/package/number

В настоящее время яиметь следующую настройку правила, которая не работает.

<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>

Интересная часть, если я удалю package.aspx \? из правила, urlsкак эти https://wwww.testserver.com/oldwebsite/TrackingNumber=number совпадают.

В моих тестовых вызовах я заменил package.aspx на package.html , и эти URL-адресане подходя также.Похоже, IIS игнорирует URL с именами файлов в URL.

1 Ответ

0 голосов
/ 30 мая 2019

Вы можете использовать приведенное ниже правило перезаписи URL для перенаправления https://wwww.testserver.com/package.aspx?TrackingNumber=number на https://wwww.testserver.com/package/number:

<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>

enter image description here

Примечание: Вы можете изменить имя хоста согласно вашему требованию.

С уважением, Jalpa

...