2016-10-04 18 views
0

我的天蓝云服务在配置文件中同时启用了http和https。 我试着在我的web.config中添加此规则使用完整网址时,重定向规则http为https不工作

<rule name="RedirectHTTPToHTTPS" stopProcessing="true"> 
     <match url="(.*)" ignoreCase="true" /> 
     <conditions> 
      <add input="{HTTPS}" pattern="^OFF$" ignoreCase="true" /> 

     </conditions> 
     <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" /> 
    </rule> 

如果我使用http://mysite.kom,它被正确重定向到https://mysite.kom

但如果我键入http://mysite.kom/other/default.aspx它重定向到http://mysite.kom/other/default.aspx,而不是https://mysite.kom/other/default.aspx

我在我的appl中添加了GlobalFilters.Filters.Add(new RequireHttpsAttribute()); ication_start event.But还是“http://mysite.kom/other/default.aspx”是不被重定向到HTTPS: //mysite.kom/other/default.aspx”

我试着在stackoverflow.I所有类似的问题,甚至移动的这规则顶部我的规则配置。任何建议,以使这一工作

回答

0

要解决这个问题,我补充

if (!HttpContext.Current.Request.IsSecureConnection && !HttpContext.Current.Request.Url.Host.Contains("localhost")) 
     { 
      Response.Redirect("https://" + Request.ServerVariables["HTTP_HOST"] 
             + HttpContext.Current.Request.RawUrl); 
     } 

到的Application_BeginRequest事件中我的global.asax.cs文件

0

这里是我使用:

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

虽然你不保留查询字符串,但它似乎仍然有你需要的一切来获取http-> https重定向。这让我怀疑浏览器缓存是否会导致你的问题?我以前遇到过这个问题,因为我在启用http-> https重定向之前先访问了该网站,结果竟然是我的浏览器从缓存中提供页面。

我在一个网站推广这个包裹,并使用上述重写规则,所以我知道它的工作原理: http://www.siteextensions.net/packages/RedirectHttpToHttps/

相关问题