2016-10-04 172 views
0

URL重寫規則從HTTP重定向到https:IIS URL重寫不是重定向子

<rewrite> 
    <rules> 
     <rule name="http to https" enabled="false" stopProcessing="true"> 
      <match url="(.*)" /> 
      <conditions> 
       <add input="{HTTPS}" pattern="^OFF$" /> 
      </conditions> 
      <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" /> 
     </rule> 
    </rules> 
</rewrite> 

但是,當您通過舊書籤或鍵入地址輸入瀏覽器直接去像http://www.example.com/employees子文件夾,它不會重定向到https://www.example.com/employees,但會保留在http://www.example.com/employees

奇怪的是,我們對開發站點有相同的重寫規則,它將從http://dev.example.com/employees重定向到https://dev.example.com/employees

很奇怪。有任何想法嗎?

回答

0

這就是我使用的 - 我將它添加到applicationhost.config文件中,所以它在全局級別。這與你的有點不同,我運行了許多不同的站點,從來沒有這樣描述過的問題。

<rule name="Root Redirect to HTTPS" enabled="true" stopProcessing="true"> 
    <match url="(.*)" /> 
     <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
      <add input="{SERVER_PORT}" pattern="^80$" /> 
      <add input="{HTTP_HOST}" pattern="example\.com$" /> 
     </conditions> 
    <action type="Redirect" url="https://www.example.com/{R:0}" /> 
</rule> 
+0

這可以用於託管非SSL站點的服務器嗎?我在dev網站上嘗試過它,它開始做生產站點所做的同樣的事情,而不是將子文件夾重定向到https。 – gottmine

+0

我讓它運行在具有一些SSL站點和一些非SSL站點的服務器上。如果你在IIS的globalrules級別執行此操作,則需要確保你有這樣的條件:'來告訴它要在哪些網站上工作。 – Henry