2

我们有一个客户域名 (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)。

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

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

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

4

2 回答 2

0

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

Type page_type = BuildManager.GetCompiledType ("~/thepage.aspx");
Page page = (Page) Activator.CreateInstance (page_type);
page.ProcessRequest (Context);
于 2012-10-25T13:57:00.237 回答
0

您可以设置重写规则来执行此操作。仅当主机与 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]

于 2012-10-25T19:47:21.130 回答