Azure Web 应用程序:www 到非 www https
azure web app : www to non www https
我有一个 Azure Web 应用程序,需要有关执行 https 的帮助。
https://www.example.com to https://example.com
http://www.example.com to https://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>
您可以使用两个单独的规则来执行此操作。在您的 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>
希望对您有所帮助。
根据您的url重写规则,我假设您的规则没有问题。虽然我没有配置自定义域,但我只是在我的 azure web 应用程序上测试它,它只包含一些静态 html 文件和 web.config 文件,然后我强制它从 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收集网络痕迹来解决此问题。另外,您可以使用更多详细信息(fiddler 网络跟踪或通过浏览器浏览它时发生的情况)更新您的问题,以便我们定位此问题。
我有一个 Azure Web 应用程序,需要有关执行 https 的帮助。
https://www.example.com to https://example.com
http://www.example.com to https://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>
您可以使用两个单独的规则来执行此操作。在您的 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>
希望对您有所帮助。
根据您的url重写规则,我假设您的规则没有问题。虽然我没有配置自定义域,但我只是在我的 azure web 应用程序上测试它,它只包含一些静态 html 文件和 web.config 文件,然后我强制它从 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收集网络痕迹来解决此问题。另外,您可以使用更多详细信息(fiddler 网络跟踪或通过浏览器浏览它时发生的情况)更新您的问题,以便我们定位此问题。