IIS Перенаправление не-www на www И http на https

Я пытаюсь реализовать два правила для IIS для перенаправления не WWW на WWW и http на https.

http://zzz.com -> https://www.zzz.com
http://www.zzz.com -> https://www.zzz.com
https://zzz.com -> https://www.zzz.com

Итак, я добавил это в свой web.config:

<system.webserver>
<rewrite xdt:transform="Insert">
 <rules>
 <rule name="Force WWW" enabled="true">
 <match url="(.*)">
 <conditions>
 <add input="{HTTP_HOST}" pattern="^[^www]">
 </add></conditions>
 <action type="Redirect" url="https://www.zzz.com/{R:1}" appendquerystring="true" redirecttype="Permanent">
 </action></match></rule>
 <rule name="Force HTTPS" enabled="true">
 <match url="(.*)">
 <conditions>
 <add input="{HTTPS}" pattern="off">
 </add></conditions>
 <action type="Redirect" url="https://www.zzz.com/{R:1}" appendquerystring="true" redirecttype="Permanent">
 </action></match></rule>
 </rules>
</rewrite> 
</system.webserver>

Мой вопрос:

Есть ли способ объединить это в одном правиле?

1 ответ

Да, вы можете объединить их в один и использовать логическуюгруппировку для условий и установить ее в "Любой", который будет эквивалентом "ИЛИ". Например:

<rule name="Force WWW and SSL" enabled="true" stopprocessing="true">
 <match url="(.*)">
 <conditions logicalgrouping="MatchAny">
 <add input="{HTTP_HOST}" pattern="^[^www]">
 <add input="{HTTPS}" pattern="off">
 </add></add></conditions>
 </match></rule>

licensed under cc by-sa 3.0 with attribution.