2008-09-05 42 views
137

有沒有一種乾淨的方式來重定向所有嘗試去HTTP:/ /版本的網站到其HTTPS:/ /等效?IIS7:HTTP-> HTTPS Cleanly

+0

的回答能對詹姆斯科瓦奇的博客上找到:http://jameskovacs.com/2007/05/09/how-to-autoredirect-to-a-sslsecured-site- in-iis/ – cpuguru 2011-03-08 19:33:45

+0

如果您在IIS 7和R2上[此處](http://www.jppinto.com/2010/03/automatically-redirect-http-requests-to-https-on-iis7-using- url-rewrite-2-0 /)是一個指南,它的工作原理和最「乾淨」的 – 2012-09-21 15:37:08

回答

173

我認爲最簡潔的方式是描述here on IIS-aid.com。它只是web.config,所以如果你改變服務器,你不必記住你通過403.4自定義錯誤頁面或其他特殊權限所經歷的所有步驟,它只是工作。

<configuration> 
    <system.webServer> 
    <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://{HTTP_HOST}/{R:1}" /> 
     </rule> 
     </rules> 
    </rewrite> 
    </system.webServer> 
</configuration> 
+4

這是完美的,對於獎勵積分來說,它是完全獨立的,因此您不必按照接受的答案中所述創建新網站 – WickyNilliams 2012-06-28 10:42:36

+1

這會針對所有網址觸發,而不管文件類型如何。例如一個txt文件的直接URL? – Cheekysoft 2013-08-27 16:27:09

-4

我認爲'乾淨'你的意思是像300重定向。配置很多服務器&語言here

5

一個乾淨的方式只改變http - > https的URL方案,並保持一切等價。它應該是服務器端,所以沒有瀏覽器問題。

JPPinto.com的Step-By-Step instructions關於如何完成,除了他們使用JavaScript(HttpRedirect.htm)而不是服務器端重定向。出於某種原因,如果您啓用了「顯示友好HTTP錯誤消息」,則默認情況下,我無法使IE運行JavaScript。腳本的另一件事是即使在FF或Chrome中,重定向到路徑也不起作用。腳本總是重定向到根。 (也許我錯過了一些東西,因爲它應該重定向到路徑。)

由於這些原因,我使用了ASP頁面進行重定向。不利的一面是,這需要在服務器上啓用傳統的ASP。

OpsanBlog有一個ASP script and instructions,可以很好地與IIS6配合使用。

我在使用IIS7的這個方法時遇到了一些問題。用戶界面主要問題,因爲IIS7使它很容易錯過任何東西。

  • 首先,您需要安裝ASP作爲 Web服務器角色功能。
  • 二,使用虛擬目錄並沒有 按預期在IIS7中工作,我沒有 試圖調試這個。相反,我將該文件放在網站的根文件夾中,並使用 403.4錯誤頁面中的url'/SSLRedirect.asp'來引用它。
  • 最後,最棘手的部分,您不得爲SSLRedirect.asp強制執行SSL。否則,你會得到一個403.4錯誤。爲此,請在IIS7的「內容視圖」中選擇該文件,然後切換到「功能視圖」,以便您可以編輯單個文件的SSL設置並禁用「需要SSL」複選框。

IIS管理器應該在標題中顯示文件名。

+1

JPPinto.com上的鏈接指令已更新,以突出顯示這不適用於IIS 7.5或R2。他們說,由於更新版本的IIS中的安全性更改,您將會受到鎖定違規。他們建議使用URL Rewrite 2.0方法(類似於@toxaq的答案)。 – AussieRob 2016-02-15 04:22:35

9

最簡單,乾淨的解決方案,我發現是

  1. 在SSL設置 - >需要SSL

  2. 錯誤頁面 - >在403.4錯誤 - >重定向到HTTPS網站

  3. 在錯誤頁面 - >編輯功能設置... - >設置本地請求的詳細錯誤和遠程請求的自定義錯誤頁面

好處是它不需要額外的代碼行。 缺點是它會將您重定向到絕對網址。

0

的Global.asax

protected void Application_BeginRequest() 
{ 
if (!Context.Request.Url.AbsoluteUri.Contains("localhost") && !Context.Request.IsSecureConnection) 
Response.Redirect(Context.Request.Url.ToString().Replace("http:", "https:")); 
}