.NET MVC 2 RequireHttps - 如何将www.mysite.com重定向到mysite.com

时间:2010-11-01 02:24:52

标签: .net asp.net-mvc-2 ssl https

在.NET MVC 2中,您可以应用<RequireHttps()>属性来使方法受SSL保护。

<RequireHttps()>
Function Index() As ActionResult
    Return View()
End Function

假设您的SSL证书是针对mysite.com发布的。如果用户通过输入http://www.mysite.com访问您的网站,<RequireHttps()>会将其重定向到https://www.mysite.com,这会使浏览器显示无效的证书警告。

切断www的最佳方法是什么?使用<RequireHttps()>时的前缀?

2 个答案:

答案 0 :(得分:1)

解决方案是始终(如用户首次使用www版本时)将用户重定向到您网站的非www版本。所以你需要Https属性才能工作。

您可以在IIS中执行此操作,请参阅此处:http://forums.iis.net/t/1154053.aspx

答案 1 :(得分:1)

我在IIS 7上,可以访问URL重写模块http://learn.iis.net/page.aspx/460/using-the-url-rewrite-module/

我把它放在MVC 2应用程序的web.config文件中解决了这个问题:

<configuration>
...
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="CanonicalHostNameRuleMain" stopProcessing="true">
          <match url="(.*)" />
          <conditions logicalGrouping="MatchAny">
            <add input="{HTTP_HOST}" pattern="^mysite\.com$" negate="true" />
            <add input="{HTTPS}" pattern="^off$" />
          </conditions>
          <action type="Redirect" url="https://mysite.com/{R:1}" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>


http://mysite.com - &gt; https://mysite.com
http://www.mysite.com - &gt; https://mysite.com
https://www.mysite.com - &gt; https://mysite.com

这很简单且有效,但是只有一些优雅的MVC解决方案仍然会很好。