2016-05-04 22 views
1

我試圖重定向誰進入HTTP只有用戶://site.domain.com到https://site.domain.comIIS重寫 - 僅將一個主機名的根重定向到HTTPS?

任何其他HTTP頁面不應該重定向到HTTPS(例如:http://site.domain.com/page2

我已經試過這種方法:

<rewrite> 
     <rules> 
      <rule name="Redirect to HTTPS" enabled="true" patternSyntax="ECMAScript" stopProcessing="true"> 
       <match url="^$" ignoreCase="true" /> 
       <conditions logicalGrouping="MatchAll"> 
        <add input="{HTTPS}" pattern="^OFF$" /> 
        <add input="{HTTP_HOST}" pattern="^site\.domain\.com$" /> 
       </conditions> 
       <action type="Redirect" url="https://site.domain.com/" appendQueryString="false" redirectType="SeeOther" /> 
      </rule> 
     </rules> 
    </rewrite> 

或者這一個:

<rewrite> 
     <rules> 
      <rule name="Redirect to HTTPS" enabled="true" patternSyntax="ECMAScript" stopProcessing="true"> 
       <match url="(.*)" ignoreCase="true" /> 
       <conditions logicalGrouping="MatchAll"> 
        <add input="{HTTPS}" pattern="^OFF$" /> 
        <add input="{HTTP_HOST}" pattern="^site\.domain\.com$" /> 
        <add input="{PATH_INFO}" pattern="^$" /> 
       </conditions> 
       <action type="Redirect" url="https://site.domain.com/" appendQueryString="false" redirectType="SeeOther" /> 
      </rule> 
     </rules> 
    </rewrite> 

但是,沒有發生重定向時。我錯過了什麼嗎?

回答

1

What is the regular expression to match the empty string for a rewrite rule?

但我會努力堅持^ $和嘗試此變體:

<rewrite> 
    <rules> 
     <rule name="Redirect to HTTPS" stopProcessing="false"> 
      <match url="^$" /> 
      <conditions> 
       <add input="{HTTPS}" pattern="off" ignoreCase="true" /> 
      </conditions> 
      <action type="Redirect" url="https://{SERVER_NAME}/" redirectType="Permanent" /> 
     </rule> 
    </rules> 
</rewrite>