2011-08-02 33 views
13

每當有人通過HTTP協議發出請求時,我會重寫url以使其成爲HTTPS。這是在web.config中的代碼:重寫規則錯誤:HTTP錯誤500.50 - URL重寫模塊錯誤。表達式「https://abc.com/{R:1」無法擴展

<rule name="Imported Rule 1-1" enabled="true" stopProcessing="true"> 
    <match url="^(?!https://).*" ignoreCase="false" /> 
    <conditions logicalGrouping="MatchAll"> 
     <add input="{SERVER_PORT}" pattern="80" ignoreCase="false" /> 
    </conditions> 
    <action type="Rewrite" url="https://abc.com/{R:1}" /> 
</rule> 

然而,當我瀏覽在http://我收到IIS錯誤

HTTP Error 500.50 - URL Rewrite Module Error. The expression "https://abc.com/{R:1}" cannot be expanded.

我怎樣才能解決這個問題?我完全困惑。

+0

現在我就在此也。你有沒有找到解決方案?如果是這樣,請在此發佈。 –

回答

14

這些匹配是從零開始的。

<action type="Rewrite" url="https://abc.com/{R:1}" /> 

因爲只有一個匹配項,所以不起作用。您需要:

<action type="Rewrite" url="https://abc.com/{R:0}" /> 

此外,這不起作用,因爲您只能匹配網站根下面的路徑。

<match url="^(?!https://).*" ignoreCase="false" /> 

看起來你正在檢查ssl。試試這個:

 <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
     <add input="{HTTPS}" pattern="^OFF$" /> 
     </conditions> 
-1

您可以通過web配置重定向到 希望這將有助於充分

<rule name="Redirect to WWW" stopProcessing="true"> 
    <match url=".*" /> 
    <conditions> 
     <add input="{HTTP_HOST}" pattern="^abc.com$" /> 
    </conditions> 
    <action type="Redirect" url="http://www.abc.com/{R:0}" redirectType="Permanent" /> 
</rule>