URL-правило перезаписи в IIS 8 не запускается - PullRequest
0 голосов
/ 23 марта 2020

У меня проблема с перезаписью URL, и я не знаю, что я делаю неправильно, поэтому, возможно, вы можете указать мне правильное направление. У нас был intr anet -сайт, который имел такой шаблон: intranet.old-site.com. Теперь у нас есть новый домен, и я хочу перенаправить мои устаревшие ссылки на первую страницу нашего нового intr anet, который выглядит следующим образом: intranet.new-site.com.

Я установил модуль перезаписи URL в IIS и на мой взгляд, установка правильная:

Соответствующий URL

Request URL: matches pattern.
Using:       Wildcards
Pattern:     *intranet.old-site*
Ignore case: true

Условия

none

Переменные сервера

none

Действие

Action Type:                         Rewrite
Action Properties:                   Rewrite-URL: http://intranet.new-site.com/
Append query string:                 true
Log rewritten URL:                   false
Stop processing of subsequent rules: false

Я также открыт для любой идеи о том, что может работать, поэтому, если есть Правило для web.config, я мог бы попробовать это тоже.

Обновление 1:

веб-конфигурация теперь выглядит следующим образом:

<rewrite>
    <rules>
        <rule name="RewriteSG2DE" patternSyntax="ECMAScript" stopProcessing="true">
            <match url="(.*).sgbdd.saint-gobain(.*)" />
                <action type="Redirect" url="intranet.stark-deutschland.net" />
                <conditions logicalGrouping="MatchAny">
                    <add input="{HTTP_HOST}" pattern="(.*)sgbdd.saint-gobain(.*)" />
                    <add input="{HTTP_HOST}" pattern="intranet.sgbdd.saint-gobain.com" />
                </conditions>
        </rule>
    </rules>
</rewrite>

Я хочу любой сайт, который в основном похож на intranet.sgbdd.saint-gobain.com/start.asp?something_more "для переадресации / перенаправления на intranet.stark-deutschland.net/start.asp?something_more

Например:

intranet.sgbdd.saint-gobain.com/start.asp?something_more --> intranet.stark-deutschland.net/start.asp?something_more
somesite.intranet.saint-gobain.com/my/new/site --> somesite.intranet.stark-deutschland.net/my/new/site

Я также добавил предложенные условия:

enter image description here

Спасибо за ваш вклад

1 Ответ

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

Использование двух правил перезаписи URL намного проще. Если вы хотите перенаправить

intranet.sgbdd.saint-gobain.com/start.asp?something_more --> intranet.stark-deutschland.net/start.asp?something_more
somesite.intranet.saint-gobain.com/my/new/site --> somesite.intranet.stark-deutschland.net/my/new/site

, тогда правило может быть таким:

  <rule name="rule1" stopProcessing="true">
                <match url="(.*)" />
                <conditions trackAllCaptures="true">
                    <add input="{HTTP_HOST}" pattern="^(.*)saint-gobain.com$" />
                    <add input="{HTTP_HOST}" pattern="intranet.sgbdd.saint-gobain.com" negate="true" />
                </conditions>
                <action type="Redirect" url="http://{C:1}stark-deutschland.net/{R:1}" redirectType="Temporary" />
            </rule>
            <rule name="rule2" stopProcessing="true">
                <match url="(.*)" />
                <conditions>
                    <add input="{HTTP_HOST}" pattern="^intranet.sgbdd.saint-gobain.com$" />
                </conditions>
                <action type="Redirect" url="http://intranet.stark-deutschland.net/{R:1}" redirectType="Temporary" />
            </rule>

enter image description here enter image description here

Я пытался объединить два правила в одно правило, но с выражением что-то не так ?! поэтому рекомендуется разделить на два правила.

Если вы имеете в виду

intranet.sgbdd.saint-gobain.com/start.asp?something_more --> intranet.stark-deutschland.net/start.asp?something_more
somesite.intranet.sgbdd.saint-gobain.com/my/new/site --> somesite.intranet.stark-deutschland.net/my/new/site

Тогда правило может быть таким:

<rule name="RewriteSG2DE" patternSyntax="ECMAScript" stopProcessing="true">
            <match url="(.*)" />
                <action type="Redirect" url="http://{C:1}stark-deutschland.net/{R:1}" redirectType="Temporary" />
                <conditions logicalGrouping="MatchAny">
                        <add input="{HTTP_HOST}" pattern="(.*)sgbdd.saint-gobain.com" />
                </conditions>
        </rule>
...