Добавление входящего правила в IIS [UrlRewite]
В настоящее время на моем производственном сервере установлено следующее правило входящего трафика, который работает для всех моих требований.
Входящее правило заключается в следующем.
Match URL section
Requested URL: Matches the Pattern
Using: Regular Expression
Pattern: (.*)
Ignore Case: checked.
Conditions section
Logical grouping: Match All.
Input: {HTTPS}
Type: Matches the Pattern
Pattern: ^OFF$
Track capture groups across conditions: unchecked.
Action section:
Action type: Redirect
Redirect URL: https://www.domainname.com/{R:0}
Append query string: checked.
Redirect Type: Permanent (301).
Мое требование: когда пользователь вводит
https://beta.domain.com it should redirect to https://www.domain.com.
если пользователь вводит
http://beta.domain.com it should redirect to https://www.domain.com.
Если пользователь вводит
http://www.domain.com it should redirect to https://www.domain.com
Если пользователь вводит
http://domain.com it should redirect to https://www.domain.com
Заранее спасибо. Любая помощь будет оценена.
Заранее спасибо.
1 ответ
Разве это не то, что условное условие должно делать? Он проверяет, выключен ли HTTPS, и только тогда произойдет перенаправление. Если HTTPS включен, перенаправление не предполагается, иначе вы окажетесь в бесконечном перенаправлении.
Если вы всегда хотите, чтобы имя хоста было www.domainname.com
Вы должны добавить это как дополнительное условие. Например:
<rule name="Force HTTPS and host name: www.domainname.com" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTPS}" negate="true" pattern="^ON$" />
<add input="{HTTP_HOST}" negate="true" pattern="^www\.domainname\.com$" />
</conditions>
<action type="Redirect" url="https://www.domainname.com/{R:0}" appendQueryString="true" redirectType="Permanent" />
</rule>
Если либо HTTPS
не ON
или же HTTP_HOST
не www.domainname.com
он будет перенаправлять. Только если оба они верны, он не будет перенаправлен.