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

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

如果是InStr(UCase(Request.ServerVariables(" SERVER_NAME"))),则UCase(" subdomain1.YourHostedDomainName.com"))> 0然后         的Response.Redirect(QUOT; / subdomain1&QUOT) ElseIf InStr(UCase(Request.ServerVariables(" SERVER_NAME"))),UCase(" subdomain2.YourHostedDomainName.com"))> 0然后         的Response.Redirect(QUOT; / subdomain2&QUOT) ElseIf InStr(UCase(Request.ServerVariables(" SERVER_NAME"))),UCase(" subdomain3.YourHostedDomainName.com"))> 0然后         的Response.Redirect(QUOT; /subdomain3/home.asp") 结束如果

ASP.NET MVC是我的第一个web项目,据我所知,所有路由都通过RegisterRoutes()和Global.asax中设置的路由集合理解。有什么想法吗?

有帮助吗?

解决方案

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

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

如果您想让您的用户保持在子域名,我认为这是不可能的。我从未使用ASP .Net MVC,但我认为路由是按照 AppDomain 注册的,这意味着每个子域的文件夹必须是它自己的 Application 。没有办法(AFAIK)通过 AppDomain 传输执行( Server.Transfer 不会这样做。)

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

其他提示

MVC中的路由管理器是将URL映射到控制器。控制器是代码,位置无关紧要。我不知道使用路由进行重定向的方法,这是你正在寻找的。 DiscountASP.Net应该有一种方法将你的新域名指向另一个文件夹,我会检查你的控制面板是否有这样做。

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

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

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

您似乎试图运行两个单独的网站,其中一个位于子域名。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top