2008-12-29 13 views
1

如何在ASP.NET中創建子域? 我有我的主頁(Home.aspx) 舉例幾個環節:1和連接2如何在ASP.NET中創建SubDomains並將其重定向到它們?

我需要建立兩個子域link1.example.com和link2.example.com 並重定向到他們。我將使用Response.Redirect進行導航。

問題: 這些文件需要駐留在不同的目錄中嗎? 我可以在本地主機上測試或模擬此示例嗎?

任何幫助這個新手ASP.NET程序員將不勝感激。

回答

4

根據你實際嘗試用這些重定向來完成什麼,這可能是有用的。如果您只是試圖從一個Web應用程序處理多個子域,則可以完全使用基於IIS的服務器來承載具有ISAPI重寫工具的單個Web應用程序,例如Ionics Isapi重寫篩選器(http://www.codeplex.com/IIRF),假設您可以將ISAPI篩選器添加到您的主機環境。

由於在ASP.NET甚至知道請求之前處理ISAPI過濾器,所以您可以從一個Web應用程序託管許多子域(和完整域)。不幸的是,在ASP.NET內置Web服務器(Cassini)中模擬這種類型的重定向是不可能的,因爲它不使用ISAPI。該方法允許您測試最終子域的功能,但僅限於最終重定向位置;由於Windows主機文件不允許使用端口規則,因此無法真正在卡西尼中測試原始域映射。

如果您將單個應用程序設置爲具有處理所有子域的功能的頁面,那麼您可以簡單地將子域的請求重定向到您的單個應用程序的所需位置。這可以像單個應用程序中處理新子域的所有邏輯的頁面文件夾一樣簡單。下面是一些例子重寫規則離子學,將發送的各種子域的請求到最終位置在單一的Web項目:

RewriteCond %{HTTP_Host} ^(?~new-sub-domain.yourdomain.com).*$ [I] 
RewriteRule ^(.*)$ http://www.yourdomain.com/new-sub-domain$1 [I,R=302] 
RewriteCond %{HTTP_Host} ^(?~another-new-sub-domain.yourdomain.com).*$ [I] 
RewriteRule ^(.*)$ http://www.yourdomain.com/another-new-sub-domain$1 [I,R=302] 
# '#' is a comment marker in the rewrite files 
# [I] at the end means case-insensitive 
# [L] at the end means last rule (sending the request on but hiding the forward from the end user) 
# [R] at the end means an official redirect and can be used instead of [L] (the end user will then see a new request, such as a 301 redirect using [R=301]) 

這將導致新的子域的所有請求去你的現有項目中的目錄(分別爲/ new-sub-domain /和/ another-new-sub-domain /);這可以修改,以發送他們在該項目內任何你想要的。

雖然此方法允許您從單個應用程序託管多個子域(可能包含多個完整域),但對ASP.NET Web服務器(Cassini)內重定向/重寫的限制將使您僅限於測試這些最終位置的功能(例如「/ new-sub-domain /」)。

0

您需要從您的域名提供商(從您購買域名的地方),而不是從您的ASP.NET網站設置域名和子域名。

在本地,你不能測試這個,因爲你只能訪問http://localhost作爲開發Web服務器。

相關問題