在.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()>
时的前缀?
答案 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解决方案仍然会很好。