2017-08-04 27 views
1

我有一個Azure Web應用程序,需要有關強制執行https的幫助。azure web應用程序:www到非www https

https://www.example.comhttps://example.com

http://www.example.comhttps://example.com

www.example.com到https://example.com

example.com到https://example.com

當前的web.config如下所示。這並不適用於https://www.example.com工作 - >https://example.com

<rules> 


     <!-- Force HTTPS for all requests --> 
     <rule name="HTTPS" enabled="true" patternSyntax="Wildcard" stopProcessing="true"> 
      <match url="*" /> 
      <conditions> 
      <add input="{HTTPS}" pattern="off" /> 
      </conditions> 
      <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" /> 
     </rule> 


     <!-- Redirect all requests to non www--> 
     <rule name="WWW" stopProcessing="true"> 
      <match url="^(.*)$" /> 
      <conditions> 
      <add input="{HTTP_HOST}" pattern="^(www\.)(.*)$" /> 
      </conditions> 
      <action type="Redirect" url="https://example.com{PATH_INFO}" /> 
     </rule> 

</rules> 

回答

3

根據你的url重寫規則,我認爲你的規則沒有問題。雖然我不配置自定義域,我只是測試它剛剛包含一些靜態的HTML文件和web.config文件我蔚藍的web應用程序,然後我強迫它從bruce-webapp.azurewebsites.net重定向到https://azurewebsites.net如下:

<rule name="Remove www" stopProcessing="true"> 
    <match url="^(.*)$" /> 
    <conditions> 
     <add input="{HTTP_HOST}" pattern="^(bruce-webapp\.)(.*)$" /> 
    </conditions> 
    <action type="Redirect" url="https://azurewebsites.net{PATH_INFO}"/> 
</rule> 

另外,請使用以下規則去除www前綴,以縮小這一問題:

<rule name="Remove WWW prefix" stopProcessing="true"> 
    <match url="(.*)" ignoreCase="true" /> 
    <conditions> 
     <add input="{HTTP_HOST}" pattern="^www\.yourdomain\.com$" /> 
    </conditions> 
    <action type="Redirect" url="https://yourdomain.com/{R:1}" redirectType="Permanent" /> 
</rule> 

如果上述試驗還是沒能解決你的問題,你可以利用fiddler到收集網絡跟蹤來解決這個問題。此外,您可以使用更多詳細信息更新您的問題(小提琴手網絡痕跡或當您通過瀏覽器瀏覽它時發生了什麼),以便我們找到此問題。

+0

感謝您的答案,現在,我已切換到www格式。 – nitin

+0

看來你已經解決了它。如果我的答案可以幫助你,請將其標記爲可接受的答案。 –

+0

標記可以接受,謝謝 – nitin

0

你可以用兩個單獨的規則做到這一點。在web.config文件中設置下面的配置。

<rewrite> 
    <rules> 
     <rule name="HTTP Redirect to HTTPS" enabled="true" stopProcessing="true"> 
      <match url="(.*)" ignoreCase="false" /> 
      <conditions> 
       <add input="{HTTPS}" pattern="off" /> 
      </conditions> 
      <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" /> 
     </rule> 
    </rules> 
</rewrite> 

    <rewrite> 
    <rules> 
     <rule name="Redirects to www.domain.com" patternSyntax="ECMAScript" stopProcessing="true"> 
      <match url=".*" /> 
      <conditions logicalGrouping="MatchAny"> 
       <add input="{HTTP_HOST}" pattern="^domain.com$" /> 
      </conditions> 
      <action type="Redirect" url="https://example.com/{R:0}" /> 
     </rule> 
    </rules> 

</rewrite> 

希望這會有所幫助。

+0

這不適用於https://www.example.com「https://example.com」 – nitin

相關問題