2012-10-25 47 views
2

我們有一個客戶域名(d1)指向我們的一個網站(s1),它是一個.NET 4網頁表單網站。 客戶端在不同的域(d2)上建立了一個子域,並將其指向了s1的IP地址。 如果使用了d2域,並且URL中沒有頁面,我們需要爲s1上的特定頁面提供服務。 如果可能的話,我希望在不重定向的情況下實現此目的。根據域名服務特定頁面

example.com - >網站

x.example.net - >網站/thepage.aspx(但要在地址欄中的URL保持x.example.net,而不是x.example.net/thepage.aspx)。

我已經嘗試做一個Server.Transfer開始請求,雖然這工作,回發沒有(我假設,因爲這是因爲轉移,但我不知道如何檢測回發開始請求和因此不轉移)。

我認爲可能有一種方法來利用路由,但不會有路徑(只是域名),所以像這樣設置的任何路由可能會將所有請求路由到這個頁面,如果他們沒有被抓到是一個以前的路線 - 不理想)。

因此,簡而言之: 有沒有辦法在Global.asax的Application_BeginRequest中檢測回傳,所以我只傳遞初始請求? 或者有沒有辦法將域名映射到頁面而不重定向? 有一些我不知道的功能可以實現嗎?

回答

0

您可以設置重寫規則做這個。只有當主機匹配x.example.net時,以下規則纔會將root Url重寫爲/thepage.aspx。

RewriteCond %{HTTP_HOST} (^x.example.net$) 
RewriteRule ^$/[NC,L] 

如果你有IIS7:您使用URL Rewrite可以做到這一點。

Url Rewrite

如果您有IIS6:你可以在服務器上設置ISAPI Rewrite

根據您的設置,二號線可包括斜槓:

重寫規則^/$ /thepage.aspx [NC,L]

+0

我想在沒有第三方組件的情況下實現這一點。不過,如果我沒有@納森的建議,我會放棄它。謝謝 – Jag

+0

好吧,我添加了IIS7 URL重寫選項。 –

0

你可以寫一個HTTP模塊會檢查傳入的請求 - 如果請求的是x.domain2.com,那麼你可以調用thepage.aspx這樣的:

Type page_type = BuildManager.GetCompiledType ("~/thepage.aspx"); 
Page page = (Page) Activator.CreateInstance (page_type); 
page.ProcessRequest (Context); 
+0

啊,我所遇到的活化劑在我的旅行中,但從來沒有玩過它。我會放棄它。 – Jag