2012-06-15 131 views
0

我有一個域名指向我的託管帳戶的根目錄。在根目錄下,我有一個Web.Config(僅用於URL重寫)和2個應用程序開始點,即:/ josh和/ sudoktion。IIS URL重寫問題

我的網址重寫規則是建立這樣做的:如果用戶去www.sudoktion.com它去/ sudoktion,同樣,如果用戶去josh.sudoktion.com它去/喬什。這工作完美。

<rule name="Rewrite1" stopProcessing="true"> 
<match url="(.*)" /> 
<conditions> 
<add input="{HTTP_HOST}" pattern="^www.sudoktion.com$" /> 
</conditions> 
<action type="Rewrite" url="sudoktion/{R:1}" /> 
</rule> 


<rule name="Rewrite9" stopProcessing="true"> 
<match url="(.*)" /> 
<conditions> 
<add input="{HTTP_HOST}" pattern="^josh.sudoktion.com$" /> 
</conditions> 
<action type="Rewrite" url="josh/{R:1}" /> 
</rule> 

但是,我的問題是,如果用戶去:sudoktion.com沒有追加www。到一開始,它會將用戶帶到根目錄並暴露根目錄的內容。我嘗試用pattern =「sudoktion.com $」添加一條新規則,並將其重寫爲sudoktion/ ,但該規則打破了josh.sudoktion.com路徑問題的樣式。

如何添加sudoktion.com/的重寫規則到sudoktion /而不會將規則josh.sukoktion.com打破爲josh /?

回答

1

以下額外的行添加到第一個規則的條件:

<add input="{HTTP_HOST}" pattern="^sudoktion.com$" /> 

,使之匹配任何這兩個rukes的。所以規則的整個XML將是:

<rule name="Rewrite1" stopProcessing="true"> 
    <match url="(.*)" /> 
    <conditions logicalGrouping="MatchAny"> 
    <add input="{HTTP_HOST}" pattern="^sudoktion.com$" /> 
    <add input="{HTTP_HOST}" pattern="^www.sudoktion.com$" /> 
    </conditions> 
    <action type="Rewrite" url="sudoktion/{R:1}" /> 
</rule> 
+0

謝謝Marco!完美的作品 – jr3