我的.net mvc网站托管在液态网络云中。我想重定向所有网站用户,如果他们输入以下网址http://example.com,http://www.example.com,https://example.com
到https://www.example.com(即一致的网址,无论他们如何输入) 我在web.config中尝试了以下代码,但是没有运气。
<rule name="Redirect Non WWW" stopProcessing="true" >
<match url="^(http\.)(.*)$" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTPS}" pattern="^OFF$" />
<add input="{HTTP_HOST}" pattern="^https://www.example.com$" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="https://www.example.com/{R:0}" appendQueryString="true" />
</rule>
该域已经注册为www.example.com,并且在域上启用了SSL。
答案 0 :(得分:0)
您已使用MatchAll
,并且还设置了URL应该具有https
才能开始重新分配的条件!只需将其更改为使用http
:
不正确:
<add input="{HTTP_HOST}" pattern="^https://www.example.com$" />
正确:
<add input="{HTTP_HOST}" pattern="^http://www.example.com$" />
答案 1 :(得分:0)
由于您将强制重定向使用HTTPS,因此(。*)将匹配所有URL,您可以将模式设置为off。
<rule name="HTTP to HTTPS Redirection" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Found" />
</rule>
更新:
方法1没问题,但也为以后访问这篇文章的人添加了它。
方法2:
<rule name="HTTP to HTTPS Redirection" enabled="true">
<match url="(.*)" />
<action type="Redirect" url="https://www.example.com/{REQUEST_URI}" appendQueryString="true" redirectType="Permanent" />
</rule>