Правило перезаписи URL - подпапка для запроса значения строки (часть 2) - PullRequest
0 голосов
/ 16 марта 2020

У меня есть вопрос относительно перезаписи URL в IIS. Вопрос похож на Правило перезаписи URL - довольно небольшая подпапка для запроса строкового значения , но я не могу адаптировать ответ к моим потребностям.

У нас есть интерфейс REST, имеющий такую ​​структуру:

http://rest.company.nl: 8090 / interface.svc / accountmanager? Customer = TEST

Теперь мы хотим добавить вложенную папку компании в URL и использовать перезапись URL, чтобы иметь возможность использовать одно и то же приложение для отдыха для всех компаний. Это должно работать так:

Должен сопоставляться с

Я написал следующее правило на сайте IIS (с Добавить строку запроса и Журнал перезаписанного URL оба проверены):

<rule name="Company specific REST" patternSyntax="Wildcard" stopProcessing="true">
    <match url="*/interface.svc/*" />
    <action type="Rewrite" url="http://rest.company.nl:8090/interface.svc/{R:2}?company={R:1}" logRewrittenUrl="true" />
    <conditions>
    </conditions>
</rule>

С https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/url-rewrite-module-configuration-reference Я понимаю, что совпадение в правиле будет сравниваться с путем URL-адреса. Теперь мой путь содержит файл (interface.sv c), а не папку. Может ли это вызвать проблемы?

Ответ, который я получаю при вводе компании с указанием c URL-адрес 404, и нет журнала, который бы пролил свет.

Спасибо за ваше время!

1 Ответ

1 голос
/ 17 марта 2020

В вашем регулярном выражении есть некоторая проблема.

Вы можете попробовать использовать приведенное ниже правило:

<rule name="Company specific REST" patternSyntax="ECMAScript" stopProcessing="true">
    <match url="interface.svc/(.*)/(.*)" />
    <action type="Rewrite" url="http://rest.company.nl:8090/interface.svc/{R:2}?company={R:1}&amp;{C:1}" appendQueryString="false" logRewrittenUrl="true" />
    <conditions>
           <add input="{QUERY_STRING}" pattern="(.*)" />
    </conditions>
</rule>
...