2011-12-12 96 views
0

我想通過IIS重寫引擎將所有www域全裸。有許多域指向相同的應用程序。在IIS 7.5中重定向URL

這裏是我的規則:

^(WWW)(。*)$

動作類型:重定向 重定向URL:{R:2} 重定向類型:永久

當我測試www.xxx.com

ř圖案:0 => www.stac koverflow.com R:1 => www。 R:2 => www.stackoverflow.com

這很好。 有什麼不對?還應該包含「http://」?

+0

我添加了一個回參考條件。那是你在找什麼?基本上在第一個(或者尊敬它或者計數它)的地方取出parens並且做這樣的事情:^ www \。(。+)$(用於HTTP_HOST)並且重定向到http:// {C:1}// {R:0} – craniumonempty

+0

如果您只是執行將使用「www」匹配整個內容的^ www \。(。+)$。如果你想具體你可以做到這一點:^ www \。(。+)\。(com | net | org)$ for「com」or「net」or「org」 – craniumonempty

+0

哦,還要加redirectType =「Permanent」動作標籤使其永久..哦,它應該是^ www \。(。+ \。(com | net | org))$或者你將不得不爲第二部分調用2 back引用 – craniumonempty

回答

2

像^(www \。)(。+)$這樣的東西應該在匹配http_host時工作,但是指定域可能會更好。從我所知道的IIS(不多)和它在網上說的東西,如:

<rewrite> 
    <rules> 
     <rule name="Redirect www.xxx.com to xxx.com" patternSyntax="ECMAScript" stopProcessing="true"> 
      <match url=".*" /> 
      <conditions> 
       <add input="{HTTP_HOST}" pattern="^www\.domain\.com$" /> 
      </conditions> 
      <action type="Redirect" url="http://domain.com/{R:0}" /> 
     </rule> 
    </rules> 
</rewrite> 

哦,你說的任何域。如果你想確保它以.com結尾應該是這樣的

^(WWW \)(+)(\。com)$對HTTP_HOST

..哦,如果你這樣做您需要備份的參考,所以嘗試這樣的事:

<rewrite> 
    <rules> 
     <rule name="Redirect www.domain.com to domain.com" patternSyntax="ECMAScript" stopProcessing="true"> 
      <match url=".*" /> 
      <conditions> 
       <add input="{HTTP_HOST}" pattern="^www\.(.+)$" /> 
      </conditions> 
      <action type="Redirect" url="http://{C:1}/{R:0}" redirectType="Permanent" /> 
     </rule> 
    </rules> 
</rewrite> 

在C:1是一個逆向引用

+0

問題是我們的域名並不具體。我們根據url生成來自數據庫的內容。所以我想將所有www域重定向到裸體。有大約100個域名指向該網站。這可以更多。所以我不能指定域。有什麼建議麼? – gandil

+0

謝謝craniumonempty。那麼.com .org .net等呢? – gandil

+0

@daemon最後包含主機名的其餘部分,並將其永久化。如果你想讓它更具動態性,請閱讀正則表達式。 – craniumonempty