网址重写规则未重定向

时间:2019-02-04 08:00:04

标签: url-rewriting

我的.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。

2 个答案:

答案 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>