我有一个托管在共享托管环境中的站点。他们使用通配符子域设置并建议使用 Response.Redirect 来实现子域的错觉。
有没有办法做到这一点,使“切换”发生在服务器上,而不是先弹回浏览器?
Server.Transfer 仅在我转移到实际资源时才有效。所以从 sub1.mydomain.com 重定向到 www.mydomain.com/public/ 不起作用。我不得不重定向到 www.mydomain.com/public/mypage.aspx 而不是我不想这样做。
我有一个托管在共享托管环境中的站点。他们使用通配符子域设置并建议使用 Response.Redirect 来实现子域的错觉。
有没有办法做到这一点,使“切换”发生在服务器上,而不是先弹回浏览器?
Server.Transfer 仅在我转移到实际资源时才有效。所以从 sub1.mydomain.com 重定向到 www.mydomain.com/public/ 不起作用。我不得不重定向到 www.mydomain.com/public/mypage.aspx 而不是我不想这样做。
为了确保“切换”发生在服务器上,您可以创建一个简单的 HTTP 模块来拦截每个请求,检查请求的 URL,然后根据需要转发它们。您的模块所要做的就是处理 OnBeginRequest 事件,然后转发请求。通过这种方式,您真的可以拥有无限的子域。
还可能需要添加一个空白主机标头,以便对未列出的子域的任何请求都转发到正确的默认网站
如果您不熟悉它们,模块的创建和使用非常简单。这是 Brendan Tompkins 非常相似的实现的链接:http: //codebetter.com/blogs/brendan.tompkins/archive/2006/06/27/146875.aspx
如果您需要特定的 URL“外观”行为,您还可以在模块中进行一些 URL 重写。