ASP .NET MVC - 更改URL.Action使用的域名?

时间:2011-10-07 10:03:43

标签: asp.net-mvc url seo action actionlink

我的网站有两个指向相同内容的域名。我们称之为www.domainA.com和www.domainB.com,其中www.domainA.com/Page与www.domainB.com/Page相同。

网站上的每个页面都有许多常见的导航链接(和其他链接),这些链接是使用Url.Action和Html.ActionLink调用的混合构建的。生成的URL基于当前域。由于www.domainA.com是主要域名,因此我希望www.domainB.com生成的任何链接都基于www.domainA.com。

这可以集中完成,而不是我绕过整个网站进行硬编码吗?

谢谢, 艾伦

2 个答案:

答案 0 :(得分:1)

我最终使用解决方案here来指示IIS重写对旧域的请求。

希望这可以帮助其他人有同样的要求。

艾伦

答案 1 :(得分:0)

您可以通过拥有从System.Web.Routing.Route继承的自定义路由对象来解决此问题。

例如:

public class MultipleDomainRoute : System.Web.Routing.Route
{
    // ...

    public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
    {
        VirtualPathData path = base.GetVirtualPath(requestContext, values);

        if (requestContext.Url.Host == "domain2.com") {
             path.VirtualPath = "http://domain1.com" + path.VirtualPath;
        }

        return path;
    }
}

然后在你的global.asax中,你注册你的路线使用:

routes.Add(new MultipleDomainRoute(/* args */));