[英]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.