2012-04-15 84 views
1

我有 IIS服務器,我想用於主機不同的網站(都在端口80)。
我一直在試圖很多不同的組合(包括重定向)和每一次的東西被打破(重定向環路,404,根本就沒有工作,等...)IIS上的簡單URL重寫

我想我需要的規則是這樣的:

- match any URL 
- condition 1: match {HTTP_HOST} to my site URL 
- condition 2: discard if {REQUEST_URI} is present 
- action: rewrite URL to /dir1/index.html 

(repeat for site 2) 

這裏的問題似乎是,條件2是不正確的(我應該用什麼來搭配{REQUEST_URI}

沒有下面是完整的XML:

<rewrite> 
    <rules> 
     <rule name="RuleForSite1" stopProcessing="true"> 
      <match url="(.*)" ignoreCase="false" /> 
      <conditions> 
       <add input="{HTTP_HOST}" pattern="^www\.mysite1\.com$" /> 
       <add input="{REQUEST_URI}" pattern=".+" negate="true" /> 
      </conditions> 
      <action type="Rewrite" url="dir1/index.html" /> 
     </rule> 
     <rule name="RuleForSite2" stopProcessing="true"> 
      <match url="(.*)" ignoreCase="false" /> 
      <conditions> 
       <add input="{HTTP_HOST}" pattern="^www\.mysite2\.com$" /> 
       <add input="{REQUEST_URI}" pattern=".+" negate="true" /> 
      </conditions> 
      <action type="Rewrite" url="dir2/index.html" /> 
     </rule> 
    </rules> 
</rewrite> 

回答

3

我終於明白了。
事實證明{REQUEST_URI}從來沒有真正爲空,但包含/時,它什麼也沒有。
我還發現重定向更好。

這是我的最終設置:

<rewrite> 
    <rules> 
     <rule name="RuleForSite1" stopProcessing="true"> 
      <match url="(.*)" ignoreCase="false" /> 
      <conditions> 
       <add input="{HTTP_HOST}" pattern="^www\.mysite1\.com$" /> 
       <add input="{REQUEST_URI}" pattern="^/$"" /> 
      </conditions> 
      <action type="Redirect" url="dir1/index.html" /> 
     </rule> 
     <rule name="RuleForSite2" stopProcessing="true"> 
      <match url="(.*)" ignoreCase="false" /> 
      <conditions> 
       <add input="{HTTP_HOST}" pattern="^www\.mysite2\.com$" /> 
       <add input="{REQUEST_URI}" pattern="^/$"" /> 
      </conditions> 
      <action type="Redirect" url="dir2/index.html" /> 
     </rule> 
    </rules> 
</rewrite>