Как сделать это исключение для правила перезаписи

#redirect #iis #url-rewriting #web-config #http-redirect

#перенаправление #iis #url-перезапись #web-config #http-перенаправление

Вопрос:

У меня есть следующий web.config:

 <?xml version="1.0" encoding="utf-8"?>
<configuration>

<system.webServer>
  <rewrite>
    <rules>
      <rule name="Angular Routes1" enabled="true" stopProcessing="true">
      <match url="(.*)" />
      <conditions logicalGrouping="MatchAll">
                    <add input="{REQUEST_URI}" negate="true" pattern="^/reset-password/*" ignoreCase="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />

      </conditions>
      <action type="Redirect" url="http://example.com/index.html?utm_source={R:1}" appendQueryString="false" logRewrittenUrl="true" />
    </rule>
    </rules>
  </rewrite>
</system.webServer>

</configuration>

  

Проблема в том, что, хотя я определил исключение для /reset-password URL-адреса, перенаправление все еще выполняется на этот URL-адрес… Как указано в названии правила, мой интерфейс — это приложение Angular со своей собственной маршрутизацией, но мне нужно иметь некоторые функции перезаписи для любого URL, КРОМЕ /reset-password/tokenhere

Комментарии:

1. Шаблон неверен. Включите FRT, и вы увидите, что learn.microsoft.com/en-us/iis/extensions/url-rewrite-module /…

2. @LexLi как это должно быть тогда?

Ответ №1:

попробуйте использовать приведенное ниже условие, если вы хотите сопоставить / сбросить пароль / токен здесь :

  <add input="{REQUEST_URI}" pattern="^/reset-password/(.*)" negate="true" />
  

если вы просто хотите сопоставить / сбросить пароль, используйте это:

 <add input="{REQUEST_URI}" pattern="^/reset-password/$" negate="true" />
  

Комментарии:

1. По какой-то причине он перенаправляет меня на index.html like below, хотя предполагается, что этого не должно быть. Есть какие-нибудь подсказки, как это исправить? И да, по крайней мере, шаблон работает сейчас, но я не могу получить доступ к этому пути (/reset-password/tokenhere) в моем приложении Angular…

2. @Munchkin пожалуйста, попробуйте очистить свою историю и снова зайти на сайт.

3. это не помогло:/ не помогло и использование режима инкогнито / конфиденциальности…

4. @Munchkin не могли бы вы поделиться своим неудачным снимком отслеживания запросов?

5. Как мне его сохранить?