Назад | Перейти на главную страницу

Проблема при перенаправлении папки с использованием перезаписи URL-адреса IIS

Используя Url Rewrite, я пытаюсь перенаправить / foo_bar / * в / foo / *. Я пробовал это:

<rule name="Redirect foo_bar to foo" stopProcessing="true">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTP_URL}" pattern="^/foo_bar/(.*)" />
    </conditions>
    <action type="Redirect" url="/foo/{R:1}" />
</rule>

Но это просто перенаправляет на / foo / foo_bar / *. Где я ошибаюсь?

Прежде всего, вы указываете правило для соответствия всем запросам (. *), А затем добавляете условие для определенного URL-адреса.

У вас должны быть свои ограничивающие критерии в матче:

<match url="^/foo_bar/(.*)" />

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

Во-вторых, {R: 1} относится ко всему URL-адресу из совпадения, поэтому, если у вас есть /foo_bar/ в URL-адресе это то, что находится в {R: 1}, что объясняет, почему он перенаправляет на / foo / foo_bar /.

С вашим новым правилом соответствия {R: 1} удерживает то, что находится в (.*), а не весь URL-адрес, поэтому он должен работать.