2012-09-11 39 views
1

我有一個網站重定向子域名到www域名IIS7下與捕獲所有子域名爲* .mydomain.com來 但一些網站隨機樣亞域:如何使用Global.asax中MVC4

  • www2.mydomain.com
  • wwwmydomain.com
  • etc.mydomain.com

所有子域名的作品完美加載我的MVC頁,但谷歌的索引雙打的URL,因爲有兩個不同的網址秒。

我會使用global.asax永久性地將任何子域名「301」重定向到www.mydomain.com,並保留url和查詢字符串。例如

  • www2.mydomain.com/Controller/Action/ID?query=asb TO www.mydomain.com/Controller/Action/ID?query=asb

  • wwwmydomain.com /控制器/動作/ ID?查詢= ASB TO www.mydomain.com/Controller/Action/ID?query=asb

我想不使用IIS7重定向,因爲我會用C#定製什麼子域名不應該被重定向。

我不想爲所有控制器創建頁面基礎。

+0

哪些是在Globas.asax這樣做的原因,而不是在Web容器? – 2012-09-11 15:32:41

+0

他有什麼時候重寫URL的條件,所以他使用C#代碼來做出決定。 – Gromer

回答

4

假設您使用的是IIS,您應該可以通過ARR實現此目的。

例子:

<rule name="SubDomain" stopProcessing="false"> 
        <match url="(.*)" /> 
        <conditions> 
         <add input="{HTTP_HOST}" pattern="^(?!www)(\w+)\.mine\.co\.uk$" /> 
        </conditions> 
        <action type="Rewrite" url="{C:1}/{R:1}" /> 
</rule> 

參考:http://forums.iis.net/p/1155754/1895646.aspx

+1

這是我會做的。您可以自定義匹配模式以跳過對某些子域的重寫。 – Gromer

+1

嗨,感謝您的幫助。我安裝了rewrite_2.0_rtw_x64.msi(IIS7重寫模塊),並創建了一個名爲「Canonical域名」的特定規則。該模塊問我的主域名(有或沒有www)並完成!所有子域名將被重定向。它的工作,再次感謝。 –