2011-01-11 73 views
9

我正在用IIS7託管C#/ ASP.NET編寫一個SaaS應用程序。我想爲每個註冊的客戶創建一個個性化的子域名,即fred.mydomain.com,bob.mydomain.com,每個客戶都會指向同一個應用,但每個客戶的皮膚都不相同。如何以編程方式爲IIS7創建子域?

如何以編程方式創建這些子域名?

回答

6

使用URL Rewrite的IIS7像user.mydomain.com所有請求映射(其中user是不是WWW,電子郵件或其他現有實子域)以mydomain.com/myapp?id=user然後在任何你需要的主題化腳本手柄。

您不需要爲每個創建的用戶添加規則。只需創建一條通用規則即可。

而且,在您的服務器DNS中,您需要將* .mydomain.com(其中*不是www,郵件或其他現有的真實子域名)轉發到mydomain.com IP。這非常簡單。您已有現有子域名的DNS記錄。只需添加* .mydomain.com並指向mydomain.com。這將完成技巧的DNS部分。其他部分是在URL Rewrite

+0

Sarwar,我有一個後續問題,我希望你能幫忙:http://stackoverflow.com/q/5394632/7850 – 2011-03-22 16:35:05

6

當然,意識到有人已經通過告訴你做重定向來回答你的問題,似乎更簡單的方法可能是隻抓住主機服務器變量。

  1. 設置IIS,使得所有傳入請求(不管主機 報頭)指向該一個應用程序。所有站點必須要麼在IIS中的唯一的主機名或唯一的端口,所以你會設置這個增長:網站綁定到的80

  2. 在不提供任何默認端口

    1. 主機名稱字段。這也是默認網站在默認情況下首次安裝IIS時的設置方式。

  3. 找出你的服務器的靜態IP地址,並告訴每一個新的客戶端,簽約點的DNS爲他們的域名到IP。或者,如果您將自己的域名,設置一個catchall DNS條目:* .mydomain.com - 指向您的服務器的IP地址。

  4. 在您的應用程序中,檢查當前的 主機標頭,以便提供 不同的皮膚或母版頁。

這應該從代碼中搶主機頭:

Request.ServerVariables["HTTP_HOST"] 

從那裏,你可以對一組數據庫值測試它的價值,你必須確定哪些母版/ CSS樣式表/等你需要根據該URL加載。請記住,如果你這樣做,你需要考慮一個網址輸入錯誤,因此你不會有皮膚匹配它。