2012-10-23 98 views
4

我遇到問題。在IIS我有一個網站有兩個端口80443(https)。我想將用戶的所有http請求重定向到https。我也加了Rewrite rule to https,但是當我在瀏覽器http://localhost/site中輸入時,它給了我相同的頁面。我需要將用戶重定向到httpS://localhost/siteURL從http重寫到https不起作用,

也許這是因爲我的本地配置?

而我禁用Require SSLIIS

The rule is: 
<rewrite> 
    <rules> 
    <rule name="HTTPS Redirect"> 
     <match url="(.*)" ignoreCase="false" /> 
     <conditions> 
     <add input="{HTTPS}" pattern="off" ignoreCase="false" /> 
     </conditions> 
     <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}{REQUEST_URI}" /> 
    </rule> 
    </rules> 
</rewrite> 

謝謝。

+0

規則在哪裏# – ChrisBint

+0

已編輯。謝謝。 –

回答

14

下面是我們使用在生產的確切規則IIS 7的網站從HTTP請求都重定向到HTTPS

<configuration> 
    <system.webServer> 
    <rewrite> 
     <rules> 
     <rule name="Redirect to HTTPS" stopProcessing="true"> 
      <match url="(.*)" /> 
      <conditions> 
      <add input="{HTTPS}" pattern="^OFF$" /> 
      </conditions> 
      <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Found" /> 
     </rule> 
     </rules> 
    </rewrite> 
    </system.webServer> 
</configuration> 

之間存在着我們使用已發佈什麼以及一些細微的差別。另外,既然你在本地主機上運行,​​你會不會在visual studio中使用內置的web服務器?我不認爲它會處理IIS重寫規則。

+0

是的,你是對的。我已經解決了這個問題。問題在於不正確的網址。謝謝。 –

+0

@NickitaFabregas真棒 - 很高興你明白了。你應該自己張貼和標記答案,或者將上面的解答之一標記爲答案,這樣對於那些未來可能會遇到的問題,它不會成爲一個開放/未答覆的問題! – Tommy

+0

這個配置文件應該放在哪個文件中? –

0

您可以將其添加到您的網頁。強制重定向。

if (!Request.IsSecureConnection) 
{ 
Uri uri = new Uri(Request.Url, Request.RawUrl); 
Response.Redirect(string.Format("https://{0}{1}{2}", uri.Host.StartsWith("www.x.com") ? uri.Host : "www.x.com", uri.AbsolutePath, uri.Query)); 
} 

我剛纔看到你的MVC

標籤這個屬性添加到你的行動。或控制器。

[RequireHttps] 
+0

已經解決。謝謝。 –

3

我知道這可能不是你的問題,但我也有類似的崩潰,這是由不同的問題的原因。

我已經啓用了要求SSL並且導致站點不斷返回403.所以要使用此方法,您必須禁用SSL設置 - >需要SSL。

希望這可以幫助別人。

0

此外,如果您有多個規則,訂單可能很重要。確保在其他規則或重定向可能無法觸發之前添加重定向規則。

以下是使用需要規則順序的SPA的示例。

<rules> 

     // Adding this as last rule will cause it to not redirect 
     <rule name="HTTP/S to HTTPS Redirect" enabled="true" stopProcessing="true"> 
     <match url="(.*)" /> 
     <conditions logicalGrouping="MatchAny"> 
      <add input="{SERVER_PORT_SECURE}" pattern="^0$" /> 
     </conditions> 
     <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" /> 
     </rule> 


     <rule name="static dist files" stopProcessing="true"> 
     <match url="^(.+)" /> 
     <conditions> 
      <add input="{APPL_PHYSICAL_PATH}app\{R:1}" matchType="IsFile" /> 
     </conditions> 
     <action type="Rewrite" url="/app/{R:1}" /> 
     </rule> 
     <rule name="index.html as document root" stopProcessing="true"> 
     <match url="^$" /> 
     <action type="Rewrite" url="/app/" /> 
     </rule> 
     <rule name="SPA Routes" stopProcessing="true"> 
     <match url=".*|.*/.*$" /> 
     <conditions logicalGrouping="MatchAll"> 
      <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
      <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
      <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" /> 
     </conditions> 
     <action type="Rewrite" url="/app/" /> 
     </rule> 
    </rules>