2009-11-28 40 views
0

我有一个网站托管在共享主机环境中。他们使用通配符子域设置,并建议使用Response.Redirect来实现子域的幻觉。替代Response.Redirect来生成子域

有没有这样做的方式,使得“开关”发生在服务器上,而不是先弹回到浏览器?

Server.Transfer只适用于转移到实际资源。因此,从sub1.mydomain.com重定向到www.mydomain.com/public/不起作用。我不得不重定向到www.mydomain.com/public/mypage.aspx而不是我不想做的事。

回答

0

为了确保服务器上发生“切换”,您可以创建一个简单的HTTP模块来拦截每个请求,检查请求的URL,然后根据需要转发它们。你的模块所要做的就是处理OnBeginRequest事件,然后转发请求。这样你就可以拥有无​​限的子域名。

可能还需要添加一个空白主机头,这样对于没有列出被转发到正确的默认网站

如果您不熟悉它们的子域的任何请求,模块创建和使用的工作非常简单。 继承人指向由布伦丹·汤普金斯非常类似的实现: http://codebetter.com/blogs/brendan.tompkins/archive/2006/06/27/146875.aspx

你也可以做一些URL在模块中重写如果您需要特定的URL“看”的行为。

+0

您正在描述一种URL重写形式,但生成的URL对最终用户不可见。例如,可以在服务器上捕获并重新路由domain.com/subdomain/page.aspx,但该更改对用户不可见。另外,如果域和子域在同一网站上运行,则最终页面可能会相同。 – RickNZ 2009-11-29 00:43:59

+0

根据提出的问题,我没有看出这是一个要求。 – PortageMonkey 2009-11-29 06:47:09