2012-11-09 104 views
2

我有現有的規則作爲xml將重寫或重定向到其域的任何請求到特定的URL。它不會讓任何出站請求離開域。在IIS 7中的URL重寫

我想添加一個EXCEPTION只有一個網址(比如說abc.com)。如何向特定請求添加異常?

(請不要提供任何像global.asax,因爲IIS不與ASP.NET應用程序,但與其他應用程序)。

當前規則:

<rewrite> 
    <rules> 
     <rule name="topcontent"> 
      <match-url=".*"> 
       <action type="rewrite" url="mysite.com/{R:0}"/> 
      </match-url> 
     </rule> 
    </rules> 
</rewrite> 

如果任何入站請求到達它重寫URL來mysite.com。我需要添加一個例外說abc.com/......如何做到這一點?

+0

你真的改寫要求到其他域,使用IIS即作爲反向代理(URL重寫與ARR),或者你想重定向請求? –

回答

0

您可以使用下面的代碼:

<rule name="special" enabled="true"> 
    <match url=".*" /> 
    <conditions logicalGrouping="MatchAll" > 
    <add input="{HTTP_HOST}" pattern="^(www\.)?abc\.com$" negate="true" /> 
    </conditions> 
    <action type="Redirect" url="http://mysite.com/{R:0}"/> 
</rule> 

的條件已添加到規則,所以如果它不成立,那麼該動作將被執行(negate="true"

它會檢查http://{HTTP_HOST}/url,如果它不匹配abc.comwww.abc.com這是例外,在這裏,它將採取行動。

也是我認爲你可以在這裏使用Redirect代替Rewrite

+0

考慮我的域名是abc.com,而傳出域名是xyz.com。目前的'topcontent'規則將改變url並且不允許轉到外部域。你能解釋一下這個{R:0}和{C:0}是什麼,全部用於?那麼的url正則表達式是如何構建的?謝謝。 –

+0

對於反向引用的{C:0}和{R:0},請按照[在重寫規則中使用反向引用](http://www.iis.net/learn/extensions/url-rewrite-module/URL重寫模塊20的配置基準#Using_back-references_in_rewrite_rules)。 In _ _,**。***(其中「。」表示任何字符,「*」表示0個或更多重複)將過濾**所有** URL後的最後一個斜槓URI。作爲正則表達式的簡單指南,請按照[簡單正則表達式教程](http://www.icewarp.com/support/online_help/203030104.htm) – Mahyar

0

進入IIS管理器> [您的站點]> Url Rewrite。

在匹配abc.com的那個之前添加一條新規則,並選中「停止後續規則的處理」。

+0

你可以請我在XML中顯示?因爲我不知道正則表達式和URL重寫。 –

2

創建topcontent規則之上另一條規則:

<rule name="special"> 
    <match-url="abc.com"> 
     <action type="rewrite" url="mysite.com/specialPage.htm"/> 
    </match-url> 
</rule> 

這裏有一個類似的問題:IIS URL rewrite exception