2012-02-16 32 views
1

我在web.config中我們Azure的應用程序這個重寫規則,以確保用戶始終使用https:URL重寫 - 停止HTTPS對Azure的分期GUID URL(IIS)

  <rule name="HTTP to HTTPS redirect" 
        stopProcessing="true"> 
       <match url="(.*)" /> 
       <conditions> 
        <add input="{HTTPS}" 
         pattern="off" /> 
        <add input="{REQUEST_URI}" 
         pattern="^clientaccesspolicy\.xml$" 
         negate="true" /> 
        <add input="{REQUEST_URI}" 
         pattern="^crossdomain\.xml$" 
         negate="true" /> 
       </conditions> 
       <action type="Redirect" 
         redirectType="Found" 
         url="https://{HTTP_HOST}/{R:1}" /> 
      </rule> 

它工作正常。用戶始終使用我們公司URL的子域名訪問該網站,並且我們擁有通配符證書。

但是,當應用程序正在升級時,我想在不使用https的情況下使用它(但仍不允許http訪問標準的cloudapp子域)。 因此,例如,這會工作通過http:

http://f9eccd6a9a044270b5ce97ae614c9ee1.cloudapp.net

但這並不:

http://myazuresubdomain.cloudapp.net

我正則表達式的技巧是最小的,我的URL重寫skils限於上述複製來自SO。那麼有人可以幫助我實現這個規則嗎?也許否定一個具有正好32個字符然後.cloudapp.net的url?

感謝

馬克

回答

2

下面的規則應該與你追求的。由於「stopProcessing」屬性,首先放置它將跳過https重定向。

<rule name="Staging CloudApp" stopProcessing="true"> 
    <match url=".*" /> 
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
     <add input="{HTTP_HOST}" pattern="([0-9a-f]{32})\.cloudapp\.net" /> 
    </conditions> 
    <action type="None" /> 
</rule> 
+0

Thanks @Nazulu,我會試試這個!出於好奇,這是否會成爲原始規則的一個條件?如 Mark 2012-10-03 21:31:22

+0

其實是的, – Nazulu 2012-10-05 04:00:31