爬文之後,找到兩種做法
一、使用global.asax
●
使用SSL網站時,強制http導向到https
<%@ Application Language="C#" %>
<script runat="server">
protected void Application_BeginRequest()
{
if (!Context.Request.IsSecureConnection)
{ Response.Redirect(Context.Request.Url.ToString().Replace("http://", "https://")); }
}
</script>
註:會跟「發佈」的「在發佈期間先行編譯」(PrecompiledApp.config)有衝突
二、使用web.config
●
強迫網站轉向到 HTTPS 加密安全連線 ( IIS URL Rewrite )
<rewrite>
<rules>
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" redirectType="Found"
url="https://{SERVER_NAME}:8443/{R:1}" />
</rule>
</rules>
</rewrite>
註:參考的文章都是使用HTTP_HOST,
因為HTTP_HOST帶有port號,
不適用下列兩種情況
1.網站使用非80port
2.導向到非443的https
均會導向錯誤,
建議改用SERVER_NAME加上port號