2014-03-04 55 views
8

我只是想要一個IIS 7.5重寫規則將http://www.domain.com/url1重定向到http://www.domain.com/url2(同域)。這可以通過以下方式實現:IIS重寫規則,以重定向特定域的網址到同一域上的不同url

<rule name="Redirect url" enabled="true" stopProcessing="true"> 
    <match url="^url1" /> 
    <action type="Redirect" url="http://www.domain.com/url2" 
     appendQueryString="false" redirectType="Permanent" /> 
</rule> 

但是,該網站監聽幾個域,因此上面成爲所有域的全局規則。我如何使這個特定於domain.com?已嘗試更改匹配網址並添加條件,但無法使其正常工作。謝謝。

回答

10

我得到它的工作是這樣的:

<rule name="Redirect url1" stopProcessing="true"> 
    <match url="^url1$" /> 
    <conditions> 
      <add input="{HTTP_HOST}" pattern="^(www.)?domain.com$" /> 
    </conditions> 
    <action type="Redirect" url="http://www.domain.com/url2" 
     appendQueryString="false" redirectType="Permanent" /> 
</rule> 
+0

爲什麼在匹配節點中使用^ url1 $?或者,是否打算由OP稱爲http://www.example.com/url1的內容取代? 這是否合理 - 匹配所有URL即「。*」不是更好嗎? PS:你說的其餘部分爲我工作。 – Jacques

+0

我希望domain.com/subdir1重定向到domain.com/subdir2,但網站會偵聽多個域。我不希望這個規則重定向其他領域。 url1將被您想要重定向的起始段(sub dir)替換。條件是針對特定域的。行動具有相同的域和新的細分。 –

+0

有道理,謝謝 – Jacques

2

使用此頁面上的答案,我能調整規則爲自己。我還添加了查詢參數。希望它張貼在這裏,在情況下,它可以幫助別人:

<!-- probably requires custom rewrite module, available through web platform installer --> 
<rule name="Redirect oldsite.com" stopProcessing="true"> 
    <match url=".*" /> 
    <conditions> 
     <add input="{HTTP_HOST}" pattern="^.*oldsite\.com$" /> 
    </conditions> 
    <action type="Redirect" url="http://www.newsite.com/page.cfm?userid=123&amp;mode=form" 
     appendQueryString="false" redirectType="Permanent" /> 
</rule> 

解釋某些位:

澄清一些混亂,這種「URL」是部分後域後的第一個斜槓,而不是整個網址。我將把它放在這裏,以便它得到任何URL。現在

<match url=".*" /> 

,我們將添加一個條件,因爲我有這個計算機上的多個網站,所以我要確保這條規則適用於只是其中之一。我還用通配符代替「(www。)?」因爲通配符會捕獲任何子域。

<conditions> 
    <add input="{HTTP_HOST}" pattern="^.*oldsite\.com$" /> 
</conditions> 

而且最後要注意的是誰想把多個查詢字符串PARAMS的人你需要逃避它們之間的符號,因爲如果你不這樣做,它不會工作。

​​3210
相關問題