0

我有一个包含多个子域的网站,这些子域将用户引导到我网站上的子文件夹中。每个子文件夹中都有一个 Default.aspx 文件,该文件进行一些处理,然后将用户重定向到“../Default.aspx”。

如果您键入该页面的完整 URL,这将正常工作。如果您尝试通过子域访问它,则“..”父级没有被正确解析,只是将子文件夹路径连接到主路径中,我得到一个找不到页面。

我的应用程序的根路径是 www.domain.com/root。子域指向 subdomain.domain.com/root/subfolder 当我导航到 subdomain.domain.com 时,我收到此错误:

“404 - /root/subfolder/root/Default.aspx 未找到”

我想要的只是 subdomain.domain.com 将用户重定向到一个文件夹级别到 www.domain.com/root/Default.aspx

任何人都可以帮忙吗?这是使用共享托管服务提供商的功能/限制 - 子域仅限于指向它们的文件夹?

4

2 回答 2

1

您的描述有点混乱,因为您将本地路径和 URL 混合在一起。我是否正确,您正在尝试做:页面subdomain.domain.com/root/subfolder/Default.aspx重定向到www.domain.com/root/Default.aspx

这意味着你想做两件事:

  1. 从子域重定向subdomain到子域www,以及
  2. 导航到上一个文件夹的文件。

您可以在单个 HTTP 重定向中完成这两件事。为此,请使用该Response.Redirect方法,并确保在 URL 中使用 www 子域,以及要显示的页面的正确绝对路径。

Response.Redirect("http://www.domain.com/root/Default.aspx");

更新

或者,重定向到与当前页面相关的 URL,在同一个域中。

Response.Redirect( Page.ResolveClientUrl( "../Default.aspx" ) );

更新 2

或者,使用 Host HTTP 标头来区分子域并在共享代码库中以编程方式切换。

于 2012-09-18T06:48:22.297 回答
0

答案是将所有子域指向同一个文件夹(主代码库),然后在Master文件中,根据http头进行切换。如果他们来自 partner1.domain.com,请使用 css1 - 如果他们来自 partner2.domain.com,请使用 css2 等。

这允许我在整个代码中使用相对路径,并在浏览器的 URL 栏中保留子域。

一个警告 - 如果您在多个环境中进行测试(我有一个 DEV 和一个 TST),您需要一些代码来检测您所处的环境并进行一些不同的操作,因为 http 标头主机会显示类似“localhost:51510”的内容. 对我来说,这些子域只存在于我的生产环境中。

感谢 bgever - 谢谢!

于 2012-09-19T15:28:47.930 回答