2017-03-17 139 views
-1

環境:IIS爲HTTP重寫規則到https與規範的主機

  • 的Windows Server 2012 R2
  • IIS 8.5

挑戰

完全新的重寫規則我需要實現一個可以做兩件事的規則:

01從http
  1. 更改協議HTTPS來www.example.com
  2. 更改主機名

問題是我不能真正檢驗這個本身,因爲我們的SSL證書只存在於我們的生產基地,所以我需要確保我得到這個權利。

在做研究,我發現關於重寫規則的文檔有些稀疏,但拼湊起來的各種例子以下等:

<rule name=」http_to_https_redirect"> 
    <match url="(.*)" /> 
<conditions><add input="{HTTPS}" pattern="^OFF$" ignoreCase="true" /> 
</conditions> 
    <action type="Redirect" url="https://www.example.com/{R:1}" redirectType="Permanent" /> 
    </rule> 

我仍然沒有線索,以什麼{R:1}意味着它是如何表現的,因爲我發現它只是一個簡短的概括,它是「對規則模式的返回引用由{R:N}標識,其中N是從0到9.請注意,對於這兩種類型的後向引用,{ (來自:https://www.iis.net/learn/extensions/url-rewrite-module/url-rewrite-module-configuration-reference

問題:

上述規則是正確的嗎?根據以上第1點和第2點?

希望有更多經驗的人可以證實 - 是/否?

也發現此文章: IIS Url Rewrite rule HTTP to HTTPS AND add WWW ...但實際的重寫規則從未張貼在答案!

回答

0

重寫URL使用HTTPS來完成重定向和規範的主機如下:

<rewrite> 
    <rules> 
    <rule name="redirect_http_to_https_with_canonical_host" stopProcessing="true"> 
    <match url="(.*)" /> 
    <conditions logicalGrouping="MatchAny" trackAllCaptures="false"> 
         <add input="{HTTPS}" pattern="off" /> 
         <add input="{HTTP_HOST}" pattern="www\.example\.com" negate="true" /> 
    <action type="Redirect" url="https://www.example.com{URL}" appendQueryString="true" redirectType="Permanent" /> 
    </rule> 
    </rules> 
    </rewrite> 

以下情況上述工作:

Input: http://example.com 
Result: https://www.example.com 

Input: http://www.example.com 
Result: https://www.example.com 

Input: http://example.com/somepage.aspx 
Result: https://www.example.com/somepage.aspx 

Input: http://example.com/somepage.aspx?q=test 
Result: https://www.example.com/somepage.aspx?q=test 

Input: https://example.com 
Result: https://www.example.com 

Input: https://www.example.com 
Result: https://www.example.com 

Input: https://example.com/somepage.aspx 
Result: https://www.example.com/somepage.aspx 

Input: https://example.com/somepage.aspx?q=test 
Result: https://www.example.com/somepage.aspx?q=test