我有一个包含多个子域的网站,可以将用户引导到我网站上的子文件夹中。在每个子文件夹中都有一个Default.aspx文件,它执行一些处理,然后将用户重定向到“../ Default.aspx”。
如果您输入该页面的完整URL,则此方法可以正常工作。如果您尝试通过子域访问它,则“..”父级没有被正确解析,只是将子文件夹路径连接到主路径,我得到一个找不到的页面。
我的应用程序的根路径是www.domain.com/root。 子域名指向subdomain.domain.com/root/subfolder 当我导航到subdomain.domain.com时,我收到此错误:
“404 - /root/subfolder/root/Default.aspx not found”
我想要的只是subdomain.domain.com将用户重定向到一个文件夹级别到www.domain.com/root/Default.aspx
有人可以帮忙吗?这是使用共享托管服务提供商的功能/限制 - 子域仅限于指向它们的文件夹吗?
答案 0 :(得分:1)
您的描述有点令人困惑,因为您将本地路径和URL混合在一起。我是对的,你正试图这样做:subdomain.domain.com/root/subfolder/Default.aspx
的网页重定向到www.domain.com/root/Default.aspx
?
这意味着你要做两件事:
subdomain
重定向到子域www
和您可以在单个HTTP重定向中执行这两项操作。为此,请使用Response.Redirect
方法,并确保在URL中使用www子域,以及要显示的页面的正确绝对路径。
Response.Redirect("http://www.domain.com/root/Default.aspx");
<强>更新强>
或者,在同一个域中重定向到相对于当前页面的URL。
Response.Redirect( Page.ResolveClientUrl( "../Default.aspx" ) );
更新2
或者,使用Host HTTP标头区分子域并在您的共享代码库中以编程方式切换。
答案 1 :(得分:0)
答案是将所有子域指向同一文件夹(主代码库),然后在主文件中,根据http标头进行切换。如果他们是从partner1.domain.com进来的,请使用css1 - 如果他们来自partner2.domain.com,请使用css2等。
这允许我在整个代码中使用相对路径并在浏览器的URL栏中保留子域。
一个警告 - 如果您在多个环境中进行测试(我有一个DEV和一个TST),您需要一些代码来检测您所处的环境并以稍微不同的方式运行,因为http标头主机会显示类似“localhost”的内容:51510" 。对我来说,这些子域只存在于我的生产环境中。
归功于bgever - 谢谢!