IIS переписать правило. Не могу заставить его работать. Это дает ошибку «перенаправить несколько раз» - PullRequest
0 голосов
/ 04 мая 2020

Мне нужно перенаправлять пользователя каждый раз, когда он входит в subdomain.mywebsite.com на subdomain.mywebsite.com/app. Я попытался сделать следующее

<rewrite>
  <rules>
    <rule name="MyRule" stopProcessing="true">
      <match url=".*" />
      <conditions>
        <add input="{HTTP_HOST}" pattern="^subdomain.mywebsite.com$" />
      </conditions>
      <action type="Redirect" url="https://subdomain.mywebsite.com/app" redirectType="Permanent" />
    </rule>
  </rules>
</rewrite>

Но это дает мне «многократное перенаправление» error Пожалуйста, совет

UPD: мне также нужно, чтобы он работал для https

https://subdomain.mywebsite.com

Так что каждый раз, когда пользователь открывает subdomain.mywebsite.com с HTTP или HTTPS, он должен пересылать на https://subdomain.mywebsite.com/app

1 Ответ

0 голосов
/ 04 мая 2020

Это потому, что ваше правило также работает для https://subdomain.mywebsite.com/. Так что продолжайте перенаправлять на себя. Добавьте шаблон условия {HTTPS} = off, чтобы перенаправить только запрос http.

  <rule name="MyRule" stopProcessing="true">
      <match url=".*" />
      <conditions>
                        <add input="{HTTP_HOST}" pattern="^subdomain.mywebsite.com$" />
                        <add input="{HTTPS}" pattern="^OFF$" />
      </conditions>
      <action type="Redirect" url="https://subdomain.mywebsite.com/app" redirectType="Permanent" />
    </rule>

5/7. Редактировать: Попробуйте это правило

        <rule name="MyRule" enabled="true" stopProcessing="true">
            <match url=".*" />
            <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                <add input="{HTTP_HOST}" pattern="^subdomain.mywebsite.com$" />
                <add input="{HTTPS}" pattern="^OFF$" />
                <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            </conditions>
            <action type="Redirect" url="https://subdomain.mywebsite.com/app" redirectType="Permanent" />
        </rule>
        <rule name="My Rule2" enabled="true" stopProcessing="true">
            <match url="^app(/)?$" negate="true" />
            <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                <add input="{HTTP_HOST}" pattern="^subdomain.mywebsite.com$" />
                <add input="{HTTPS}" pattern="^on$" />
                <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            </conditions>
            <action type="Redirect" url="https://subdomain.mywebsite.com/app" />
        </rule>
        <rule name="MyRule3" stopProcessing="true">
            <match url="(.*)" />
            <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                <add input="{HTTPS}" pattern="^off$" />
                <add input="{HTTP_HOST}" pattern="^subdomain.mywebsite.com$" />
            </conditions>
            <action type="Redirect" url="https://subdomain.mywebsite.com{REQUEST_URI}" />
        </rule>
...