簡體   English   中英

根據域名服務特定頁面

[英]Serve specific page according to domain name

我們有一個客戶域名(d1)指向我們的一個站點(s1),它是.NET 4 Web窗體站點。 客戶端在另一個域(d2)上設置了一個子域,並將其指向s1 IP地址。 如果使用d2域並且URL中沒有該頁面,則需要在s1上提供特定頁面。 我想在沒有重定向的情況下實現這一目標。

例如

example.com->網站

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

我試過在begin請求中執行Server.Transfer,而在此過程中,回發沒有進行(我想是因為這是因為傳輸,但我不知道如何在begin請求中檢測回發,因此無法傳輸) 。

我認為可能有一種利用路由的方法,但是沒有路徑(只是域名),因此任何設置的路由都可能會將所有請求路由到該頁面(如果它們沒有被以前的路由捕獲)-不是理想)。

因此,簡而言之:有沒有一種方法可以在global.asax中的Application_BeginRequest中檢測回發,因此我僅傳輸初始請求? 還是有一種無需重定向即可將域名映射到頁面的方法? 有一些我不知道的功能可以實現這一目標嗎?

您可以編寫一個HttpModule來檢查傳入的請求-如果請求是針對x.domain2.com的,則可以這樣調用thepage.aspx:

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

您可以設置重寫規則來執行此操作。 僅當主機匹配x.example.net時,以下規則才將根Url重寫為/thepage.aspx。

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

如果您有IIS7 :可以使用URL Rewrite進行

網址改寫

如果您具有IIS6 ,則可以在服務器上設置ISAPI Rewrite

根據您的設置,第二行可能包含斜杠:

RewriteRule ^ / $ /thepage.aspx [NC,L]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM