繁体   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