[英]How to create subdomains for IIS7 programmatically?
我正在用IIS7托管的C#/ ASP.NET中編寫一個SaaS應用程序。 我想為每個注冊的客戶創建一個個性化的子域名,即fred.mydomain.com,bob.mydomain.com,每個客戶都指向同一個應用程序,每個客戶只有不同的皮膚。
如何以編程方式創建這些子域?
使用IIS 重寫 user.mydomain.com
將所有請求(如user.mydomain.com
(用戶不是www,郵件或其他現有的真實子域))映射到mydomain.com/myapp?id=user
然后在腳本句柄中處理您需要的任何主題。
您無需為每個創建的用戶添加規則。 只需創建一個通用規則即可。
而且,在您的服務器DNS中,您需要將* .mydomain.com(其中*不是www,郵件或其他現有的真實子域)轉發到mydomain.com IP。 這很簡單。 您已擁有現有子域的DNS記錄。 只需添加* .mydomain.com並指向mydomain.com即可。 這將是DNS技巧的一部分。 其他部分在URL Rewrite中
當然通過告訴你做重定向來實現某人已經回答了你的問題,似乎更簡單的方法就是獲取主機服務器變量。
設置IIS,以便所有傳入請求(無論主機標頭)指向此應用程序。 所有站點都必須在IIS中具有唯一的主機名或唯一端口,因此您可以通過以下方式設置:
將站點綁定到默認端口80。
未在“主機名”字段中提供任何內容。 這也是首次安裝IIS時默認設置默認網站的方式。
找出服務器的靜態IP地址,並告訴每個注冊的新客戶端將其域的DNS指向該IP。 或者,如果您將擁有域名,請設置一個catchall DNS條目:* .mydomain.com - 指向您的服務器的IP地址。
在您的應用程序中,檢查當前主機標頭,以便提供不同的皮膚或母版頁。
這應該從代碼中獲取主機頭:
Request.ServerVariables["HTTP_HOST"]
從那里,您可以根據一組數據庫值測試其值,您必須根據該URL確定需要加載哪個MasterPage / css樣式表/等。 請記住,如果你像這樣做了一個catchall,你需要考慮一個錯誤的URL,因此你沒有皮膚可以匹配它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.