Ssl

IIS 7.5 SSL 重定向

  • December 2, 2012

我有一個標準網站託管在我可以完全控制的伺服器上 - www.domain.com。我最近為該域購買了 SSL 證書以準備接受信用卡,並希望將所有請求重定向到https://www.domain.com。在大多數情況下,我創建的規則(見下文)工作正常 - 如果我輸入http://www.domain.com>它將重定向到<https://www.domain.com>。我遇到的問題是,如果我轉到內部連結,例如<http://www.domain.com/folder/page.aspx,我會得到 404,因為唯一的綁定與 HTTPS 相關。如何制定重定向規則,說明對 www.domain.com 的任何請求都發送到 HTTPS,但保留所請求的原始文件夾/頁面結構?所以,要去http://www.domain.com/folder/page.aspx>將我發送到<https://www.domain.com/folder/page.aspx。我希望查詢字元串值也保持不變。

這是我目前的重寫規則:

  &lt;rewrite&gt;
       &lt;rules&gt;
           &lt;rule name="Redirect to HTTPS" stopProcessing="true"&gt;
               &lt;match url="(.*)" /&gt;
               &lt;conditions&gt;
                   &lt;add input="{HTTPS}" pattern="^OFF$" /&gt;
               &lt;/conditions&gt;
               &lt;action type="Redirect" url="https://{HTTP_HOST}/{R:1}" /&gt;
           &lt;/rule&gt;
       &lt;/rules&gt;
   &lt;/rewrite&gt;

我最終自己解決了它 - 我結合了兩種不同的規則(一個將http://domain.com>重寫為證書連結到的<https://www.domain.com),另一個只是重定向所有 HTTPS 請求,它似乎執行良好。這是相關的配置條目:

  &lt;rewrite&gt;
       &lt;rules&gt;
           &lt;rule name="CanonicalHostNameRule1"&gt;
               &lt;match url="(.*)" /&gt;
               &lt;conditions&gt;
                   &lt;add input="{HTTP_HOST}" pattern="^www\.domain\.com$" negate="true" /&gt;
               &lt;/conditions&gt;
               &lt;action type="Redirect" url="http://www.domain.com/{R:1}" /&gt;
           &lt;/rule&gt;
           &lt;rule name="Redirect to HTTPS" stopProcessing="true"&gt;
               &lt;match url="(.*)" /&gt;
               &lt;conditions&gt;
                   &lt;add input="{HTTPS}" pattern="^OFF$" /&gt;
               &lt;/conditions&gt;
               &lt;action type="Redirect" url="https://{HTTP_HOST}/{R:1}" /&gt;
           &lt;/rule&gt;
       &lt;/rules&gt;
   &lt;/rewrite&gt;

引用自:https://serverfault.com/questions/453902