根据域名提供特定页面

时间:2012-10-25 13:44:05

标签: asp.net

我们有一个客户域名(d1)指向我们的一个站点(s1),这是一个.NET 4 Web表单站点。 客户端在不同的域(d2)上设置了子域,并将其指向s1 IP地址。 如果使用d2域并且URL中没有页面,我们需要在s1上提供特定页面。 如果可能的话,我想在没有重定向的情况下实现这一点。

例如

example.com - >网站

x.example.net - >网站/thepage.aspx(但希望地址栏中的网址保留为x.example.net,而不是x.example.net/thepage.aspx)。

我已尝试在开始请求中执行Server.Transfer,虽然这有效,但回发没有(我假设是因为它是因为传输但我不知道如何检测开始请求中的回发因此不转移。)

我认为可能有一种方法可以利用路由,但是没有路径(只是域名),所以任何这样设置的路由都可能会将所有请求路由到此页面,如果它们没有被捕获的话路线 - 不理想)。

简而言之: 有没有办法在global.asax中检测Application_BeginRequest中的回发,所以我只转移初始请求? 或者有没有一种方法可以将域名映射到页面而无需重定向? 是否有一些我不知道的功能实现了这个目标?

2 个答案:

答案 0 :(得分:0)

您可以编写一个检查传入请求的HttpModule - 如果请求是针对x.domain2.com的,那么您可以像这样调用page.aspx:

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

答案 1 :(得分:0)

您可以设置重写规则来执行此操作。仅当主机与x.example.net匹配时,以下规则才会将根URL重写为/thepage.aspx。

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

如果您有IIS7 :您可以使用URL Rewrite执行此操作。

Url Rewrite

如果您有IIS6 :您可以在服务器上设置ISAPI Rewrite

根据您的设置,第二行可能包含斜杠:

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