2009-12-21 85 views
4

我正在尋找一種解決方案,以編程方式在ASP.NET,ASP.NET MVC和PHP中創建子域名。具體而言,用戶配置文件頁面應解析爲:www.domain.com/profilenamehttp://profilename.domain.com以編程方式創建子域名

+1

這個問題真的無法回答。一次處理它的一部分會更好。 DNS設置,.NET代碼,PHP代碼,等... – 2009-12-22 01:05:15

+0

是的,你是對的,我實際上不是尋找一個解決方案,但不知道它是如何正在做...... 雖然我期待爲HttpModuleHandlers寫了一些代碼和也在asp.net 4新的路由屬性.. 但我認爲更有趣的答案將張貼在這裏:) – Kubi 2009-12-22 08:28:12

回答

20

更新您的特定域的DNS設置,使* .domain.com全部指向相同的主機。

然後,程序檢查,看看使用的URL的第一部分包含你正在尋找的子域,並採取相應的行動。例如,如果第一部分包含給定的配置文件名,則從數據庫中檢索特定的配置文件數據集並將其顯示給用戶。

確保您的網絡應用程序使用相對鏈接,這樣,如果用戶使用的子域,你不要在其他地方重定向他們到達現場。

+1

+1 catch-all域是要走的路。 – 2010-04-30 14:53:25

+0

謝謝!正是我所期待的。 – Hnatt 2012-07-25 19:41:50

1

沒有通用的方法來創建子域。您需要調用由ISP或DNS提供商提供的API(通常爲SOAP或REST)。

要麼,要麼使用通配符域(*)。

在IIS方面,請務必配置您的應用程序,使其不使用主機頭。

+5

每個類似這樣的網站都使用通配符域。實際上,創建單個DNS條目意味着很長的DNS傳播延遲,瘋狂膨脹的區域文件等。 – 2009-12-21 23:53:25

+1

這取決於您需要多少個子域(OP未指定)。通配符並不總是最好的方式,特別是如果你關心可伸縮性的話。以下是一個指向創建新子域的示例API的鏈接,由受管理的DNS服務提供:https://durabledns.com/help/downloads/DurableDNS%20SOAP%20API%20Documentation%20v3.0.pdf – RickNZ 2009-12-22 04:20:13

1

你可以嘗試:

AppDomain subDomain = AppDomain.CreateDomain("ProfileUserDomain"); 

雖然你可能需要配置你的DNS,讓您的代碼的請求。動態DNS服務可能是您的答案。

+0

感謝您的回答。你有關於在IIS上配置動態DNS服務的任何信息嗎? – Kubi 2012-07-18 06:40:46

+0

我不知道如何添加動態DNS軟件到您的網絡服務器或Windows服務器,但希望使用專用服務器的帳戶將幫助你:http://howto.wired.com/wiki/Set_Up_Dynamic_DNS – tristo 2012-07-20 22:32:57