1

我在 DiscountASP.NET 上托管了一个网站,他们可以选择使用您的同一托管帐户为单独的域添加域指针。因此,如果原始站点是 abc.com,您可以购买指向 xyz.com 的域指针,并且两者最初都指向相同的根位置。使用 abc.com 的根目录是可以的,但是当 xyz.com 是地址时,我想重新路由到包含 xyz.com 代码的单独子目录。我会在哪里尝试重定向 xyz.com 以引用子目录的代码而不是使用根目录?我认为处理通常所有路由代码所在的 Global.asax 为时已晚,因为我希望每个站点的 Global.asax 文件独立处理各自的站点。

DiscountAsp.Net 论坛上的经典 ASP 帖子讨论了将如下代码添加到默认文档中。

If InStr( UCase(Request.ServerVariables("SERVER_NAME")), UCase("subdomain1.YourHostedDomainName.com") ) > 0 Then Response.Redirect("/subdomain1") ElseIf InStr( UCase(Request.ServerVariables("SERVER_NAME" )), UCase("subdomain2.YourHostedDomainName.com") ) > 0 Then Response.Redirect("/subdomain2") ElseIf InStr( UCase(Request.ServerVariables("SERVER_NAME")), UCase("subdomain3.YourHostedDomainName.com" ) ) > 0 Then Response.Redirect("/subdomain3/home.asp") End If

ASP.NET MVC 是我的第一个 Web 项目,据我所知,所有路由流程都通过 RegisterRoutes() 和 Global.asax 中设置的路由集合。有任何想法吗?

4

3 回答 3

1

您需要将子文件夹单独设置Application(在 DiscountAsp.net 的控制面板中)

然后,尝试编写一个HttpModule调用Response.Redirect来将浏览器重定向到根域上的子文件夹。

如果您想将用户保留在子域中,我认为这是不可能的。我从未使用过 ASP .Net MVC,但我假设路由是按注册AppDomain的,这意味着每个子域的文件夹必须是自己的Application。没有办法(AFAIK)跨AppDomains 转移执行(Server.Transfer不会这样做)。

如果我错了,并且可以在不使用单独Application的 s 的情况下执行此操作HttpModule,请调用Server.Transfer来自子域的请求(并确保链接相对于代表子域的文件夹;〜路径不起作用)。

于 2009-06-16T21:17:02.173 回答
0

MVC 中的路由管理器是将 url 映射到控制器。控制器是代码,位置并不重要。我不知道使用路由进行重定向的方法是您正在寻找的。DiscountASP.Net 应该有一种方法可以将您的新域指向不同的文件夹,我会检查您的控制面板以获取执行此操作的方法。

如果您在 IIS 7 上,这可能会使用主机标头为您进行定向。在这种情况下(无论是否为 IIS 7),您应该知道您可能会在网站中运行网站。如果您的根站点不是 asp.net,事情可能会更容易,但是,如果您的根 (abc.com) 是一个 asp.net 站点(听起来您的问题并非如此,但这是很好的信息,所以无论如何我都会告诉你)web.configs 将是附加的。

- root
|
|- xyz.com
 |
 |- web.config (xyz.com)
|
|- web.config (abc.com)

请注意,abc.com 的 web.config 将首先应用,然后是 xyz.com,它们可能会发生冲突并产生烦人的问题。但是您应该首先检查您的控制面板,以便将您的新域指向不同的文件夹。从一个共享主机帐户运行多个网站可能会带来很多麻烦,所以我祝你好运。

于 2009-06-16T19:45:58.673 回答
0

您似乎正在尝试运行两个单独的网站,其中一个位于子域上。

我不使用 DiscountAsp.Net,但它们应该允许您建立一个单独的网站来为您的子域提供服务;联系他们的支持。

于 2009-06-16T20:12:11.320 回答