azure web app:www到非www https

时间:2017-08-04 09:56:58

标签: iis web-config azure-web-sites iis-8

我有一个Azure Web应用程序,需要帮助来强制执行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>

2 个答案:

答案 0 :(得分:4)

根据您的网址重写规则,我认为您的规则没有问题。虽然我没有配置自定义域,但我只是在我的azure web应用程序上测试它,它只包含一些静态html文件和web.config文件,然后我强制它从bruce-webapp.azurewebsites.net重定向到https://azurewebsites.net as如下:

<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收集网络跟踪来解决此问题。此外,您可以使用更多详细信息更新您的问题(小提琴网络跟踪或通过浏览器浏览时发生的情况),以便我们找到此问题。

答案 1 :(得分: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>

希望这有帮助。